Shell 记录总数
我对使用AWK很陌生。我只是发现了Shell 记录总数,shell,unix,awk,Shell,Unix,Awk,我对使用AWK很陌生。我只是发现了FNR变量。我只是想知道是否有可能在处理文件之前获得总记录数? 因此,文件末尾的FNR 我只是需要它来做那样的事情 awk 'FNR<TOTALRECORDS-4 {print}' awk'FNR要从文件中删除最后4行,只需使用head: head -n -4 somefile > outputfile 如果只想打印文件的最后4行以外的所有行,请使用其他工具。但是,如果您正在使用awk进行其他处理,并且需要合并这些处理,只需将这些行存储在缓冲区中
FNR
变量。我只是想知道是否有可能在处理文件之前获得总记录数?
因此,文件末尾的FNR
我只是需要它来做那样的事情
awk 'FNR<TOTALRECORDS-4 {print}'
awk'FNR要从文件中删除最后4行,只需使用head
:
head -n -4 somefile > outputfile
如果只想打印文件的最后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
的命令。对于'seq 1 16'中的i;不要重复$i;done | awk'{a[i++%4]=$0}END{for(i=0;在末尾打印[0]-a[3]的问题是,如果总行数不是4的倍数,它会改变顺序。