总记录数

时间:2012-10-04 13:58:38

标签: shell unix awk

我使用AWK时很新。我刚刚发现了FNR变量。我只是想知道在处理文件之前是否有可能获得的总记录数? 所以文件末尾的FNR

我只是需要它来做那样的事情

awk 'FNR<TOTALRECORDS-4 {print}'

为了删除文件的最后4行。 感谢

2 个答案:

答案 0 :(得分:1)

要从文件中删除最后4行,您只需使用head

head -n -4 somefile > outputfile

答案 1 :(得分:1)

如果您只想打印文件的最后4行,请使用其他工具。但是,如果您正在使用awk进行其他处理并需要将其合并,只需将行存储在缓冲区中并根据需要进行打印。也就是说,存储最近的4行,并在获得换行符时在缓冲区中打印最后一行。例如:

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

这会在数组a中保留4行。如果我们位于文件的前4行,则不执行任何操作,只能将行存储在a中。如果我们在大于4的行上,你要做的第一件事就是打印4行(在a中存储在索引i%4处)你可以放置操作$0的命令这两个行动声明是必要的。