原文出處:生活費的博客,http://www.cnblogs.com/276815076/archive/2011/12/05/2276625.html#undefined
兩種情況:getline左右沒有重定向符|或<
1.當getline左右沒有重定向符|或<時,getline讀去當前文件的第一行並將數據保存到變量中,如果沒有變量,則數據保存到$0中;
由於awk在處理getline之前已經讀入了一行,所以getline得到的返回結果是隔行的。
2.當getline左右有重定向符|或<時,getline作用於定向輸入文件,由於該文件是剛打開,awk並沒有讀入一行數據,而getline讀入了一行數據,那么getline返回的是該文件的第一行,而不是隔行。
root@myfreelinux pub]# awk ‘BEGIN{“cat kecheng.dat”|getline var;print var;}’
[root@myfreelinux pub]# awk ‘BEGIN{“cat kecheng.dat”|getline;print $0;}’
[root@myfreelinux pub]# awk ‘BEGIN{getline var<”kecheng.dat”;print var;}’
[root@myfreelinux pub]# awk ‘BEGIN{getline <”kecheng.dat”;print $0;}’
以上四行awk程序都是將kecheng.dat的第一行數據打印出來,結果是:zhangsan math english chinese
[root@myfreelinux pub]# awk ‘{getline var;print $0;print var;}’ kecheng.dat
zhangsan math english chinese
lisi computer chinese english
wangwu dianzi chinese math
zhaoliu huanjing english chinese
[root@myfreelinux pub]# awk ‘{getline var;print var;}’ kecheng.dat
lisi computer chinese english
zhaoliu huanjing english chinese
以上兩個例子可以看出來,awk和getline是分別取數據文件中的行數據,而且是awk首先從數據文件中取數據,后getline取下一行數據。
getlin在不同環境下影響到awk中的值的對應關系如下圖:
————————————————-
形式 設置
————————————————-
getline $0,NF,NR,FNR
getline var var,NR,FNR
getline<file $0,$1…$NF,NF
getline var<file var
cmd|getline $0,NF
cmd|getline var var