如果要显示[0,999]范围内具有第二个字段的所有行并最终显示这些列的数量,那么这可以实现。不需要sort -nand wc -l,awk本身就可以做到:
$ awk -F, '($2 >= 0 && $2 <= 999) {printf "%10s %40s\n" , "Total", $2; i++} END{print "total: "i}' file
Total 1
Total 2
Total 4
Total 3
total: 4
如果你只想要总和:
$ awk -F, '($2 >= 0 && $2 <= 999) i++} END{print "total: "i}' file
total: 4
为什么你的命令不起作用?
与print:
$ awk -F, '{if($2 >= 0 && $2 <= 999) print "%10s" "%40s" , "Total", $2}' a | sort -n
%10s%40s Total 1
%10s%40s Total 2
%10s%40s Total 3
%10s%40s Total 4
行数还可以,尽管格式不是:要使用%10s,您需要改为使用printf。
与printf:
$ awk -F, '{if($2 >= 0 && $2 <= 999) printf "%10s" "%40s" , "Total", $2}' a
Total 1 Total 2 Total 4 Total 3
根据printf不打印新行的使用,所有输出都在同一行中。您只需要\n在每个末尾添加printf:
$ awk -F, '{if($2 >= 0 && $2 <= 999) printf "%10s %40s\n", "Total", $2}' file
Total 1
Total 2
Total 4
Total 3