如果要显示[0,999]
范围内具有第二个字段的所有行并最终显示这些列的数量,那么这可以实现。不需要sort -n
and 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