我有一個簡單的文件,這是我的awk腳本處理:AWK:印刷線後,他們已經處理過的
AAAAA BBBBBB
CCCCC DDDDDD
EEEEE FFFFFF
GGGGG HHHHHH
IIIII JJJJJJ
首先,我想打印出來的最後幾行之一,所以我開始
#!/usr/bin/awk
{if (NR==5){print $0;}}
因此得到IIIII JJJJJJ
。
現在我想打印第5行後打印第2行。所以,我改變我的腳本是:
#!/usr/bin/awk
{if (NR==5){print $0; NR=2;}
if (NR==2){print $0;}
但在這種情況下,它是一個永無止境的循環。我怎麼能先打印第5行,然後打印第2行而不打印第5行?
預期輸出清晰度:
IIIII JJJJJJ
CCCCC DDDDDD
在最後的腳本中沒有永無止境的循環。設置'NR = 2'不告訴awk重新開始讀取第2行的輸入,它只是將變量'NR'設置爲值'2',直到讀取下一行,第6行,此時'NR '變成'6'。此外,您還缺少基本的awk條件{action}語法 - awk不是C.請閱讀Arnold Robbins編寫的Effective Awk Programming第4版。 –