0

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

我只需要它来做类似的事情

awk 'FNR<TOTALRECORDS-4 {print}'

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

4

2 回答 2

1

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

head -n -4 somefile > outputfile
于 2012-10-04T14:14:05.777 回答
1

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

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

这会在数组中保留 4 行a。如果我们在文件的前 4 行,则只将行存储在a. 如果我们在大于 4 的行上,您要做的第一件事就是将第 4 行打印回来(存储在aindex中i%4)您可以根据需要放置$0在这两个操作语句之间进行操作的命令。

于 2012-10-04T17:31:00.920 回答