2012-10-04 124 views
0

我很新使用AWK。我只是發現了FNR變量。我只是想知道在處理文件之前是否有可能獲得之前的總記錄數? 所以FNR在文件末尾。總記錄數

我只是需要做這樣的

awk 'FNR<TOTALRECORDS-4 {print}' 

東西爲了刪除文件的最後4行。 感謝

回答

1

如果你只是想打印所有,但最後4行的文件中,使用不同的工具。但是,如果您正在使用awk進行其他一些處理,並且需要合併這些處理,只需將行存儲在緩衝區中並根據需要進行打印。也就是說,存儲最近的4行,並在得到換行符時將最後一行打印在緩衝區中。例如:

awk 'NR>4 { print a[i%4]} {a[i++%4]=$0}' input 

這會在數組中保留4行a。如果我們位於文件的前4行,則不要執行任何操作,而是將行存儲在a中。如果我們的行數大於4,那麼你要做的第一件事是打印返回的4行(存儲在a的索引i%4)。可以根據需要在這兩個行爲語句之間放置操作$0的命令。

+0

for i in \'seq 116 \';做echo $ i;完成| awk'{a [i ++%4] = $ 0} END {for(i = 0; i

+0

打印[0] -a [ 3]在END中是如果總行數不是4的倍數,它會改變順序。 –

1

要刪除一個文件的最後4行,你可以使用head

head -n -4 somefile > outputfile