記用AWK進行for迴圈查詢文字時候的問題
阿新 • • 發佈:2018-11-04
今天剛剛接觸awk,就想著來實驗一下,當學到for迴圈的時候,我就簡單的操作了一下
1.txt 文字如下
1 haha heihei houhou
2 yannie2 yannie3 yannie4
3 hilary2 hilary3 hilary4
4 czl2 czl3 czl4
5 wo2 shi3 ni4
當用按以下方法寫能輸出
awk '{ for(i = 0;i<5;i++) print $i }' 1.txt
輸出結果為:
1 haha heihei houhou 1 haha heihei houhou 2 yannie2 yannie3 yannie4 2 yannie2 yannie3 yannie4 3 hilary2 hilary3 hilary4 3 hilary2 hilary3 hilary4 4 czl2 czl3 czl4 4 czl2 czl3 czl4 5 wo2 shi3 ni4 5 wo2 shi3 ni4
即先輸出$0,即當前行文字內容 然後輸出$1 這一行第一列的內容,以此類推,輸出沒有問題,由於其預設以空格為分隔符,要想設定以回車為分隔符的話,可以用-F選項 -F"\n"
但是其實我寫的時候第一次是有錯誤的
我第一次寫的如下:
awk 'BEGIN{ for(i = 0;i<5;i++) print $i }' 1.txt
和
awk 'BEGIN{ for(i = 0;i<5;i++)} {print $i }' 1.txt
它輸出了5行空行
這樣寫
wk 'BEGIN{ for(i = 0;i<5;i++)} END{print $i }' 1.txt
它輸出了一行空行
那這到底是為什麼呢???
因為在awk的BEGIN中其進行的是初始化,在這一步中,已經將i初始化為4,也就是最後一行的最後一個空列,也就是回車符,所以就失敗了~~
你可以試著將前面不能輸出awk語句中i的最大值改小一點,就會發現輸出內容了,不過當然與我們的初衷向背馳啦~
所以說還是要細心啦!!!