我很新使用AWK。我只是发现了FNR
变量。我只是想知道在处理文件之前是否有可能获得之前的总记录数? 所以FNR
在文件末尾。总记录数
我只是需要做这样的
awk 'FNR<TOTALRECORDS-4 {print}'
东西为了删除文件的最后4行。 感谢
我很新使用AWK。我只是发现了FNR
变量。我只是想知道在处理文件之前是否有可能获得之前的总记录数? 所以FNR
在文件末尾。总记录数
我只是需要做这样的
awk 'FNR<TOTALRECORDS-4 {print}'
东西为了删除文件的最后4行。 感谢
如果你只是想打印所有,但最后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
的命令。
要删除一个文件的最后4行,你可以使用head
:
head -n -4 somefile > outputfile
for i in \'seq 116 \';做echo $ i;完成| awk'{a [i ++%4] = $ 0} END {for(i = 0; i
打印[0] -a [ 3]在END中是如果总行数不是4的倍数,它会改变顺序。 –