Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 记录总数_Shell_Unix_Awk - Fatal编程技术网

Shell 记录总数

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进行其他处理,并且需要合并这些处理,只需将这些行存储在缓冲区中

我对使用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的倍数,它会改变顺序。