我是使用 AWK 的新手。我只是发现了FNR
变量。我只是想知道是否可以在处理文件之前获得总记录数?所以FNR
在文件的末尾。
我只需要它来做类似的事情
awk 'FNR<TOTALRECORDS-4 {print}'
为了删除文件的最后 4 行。谢谢
要从文件中删除最后 4 行,您可以使用head
:
head -n -4 somefile > outputfile
如果您只想打印文件最后 4 行以外的所有内容,请使用不同的工具。但是,如果您正在使用 awk 进行一些其他处理并且需要合并它,只需将这些行存储在缓冲区中并根据需要打印它们。也就是说,存储最近的 4 行,并在获得换行符时打印缓冲区中的最后一行。例如:
awk 'NR>4 { print a[i%4]} {a[i++%4]=$0}' input
这会在数组中保留 4 行a
。如果我们在文件的前 4 行,则只将行存储在a
. 如果我们在大于 4 的行上,您要做的第一件事就是将第 4 行打印回来(存储在a
index中i%4
)您可以根据需要放置$0
在这两个操作语句之间进行操作的命令。