我有这个输出:
Count Process
238 0
1 1124027
1 1124065
1 1124066
1 1124069
1 1124072
1 1124073
1 1547365
1 1547366
我想添加除第一行 (238) 之外的所有计数。我如何在 awk 上执行此操作?
到目前为止我有这个,
awk 'NF == 1 {for (i=2;i<=FNR;++i) sum += i print $i}'
但它是一个错误。
编辑
我正在尝试解析此命令的输出:
cat /proc/8920/maps | awk '{print$5}' | sort | uniq -c |`awk 'NF == 1 {for (i=2;i<=FNR;++i) sum += i print $i}'`
在 uniq -c 之前一切正常,但之后我在使用 awk 脚本添加第一列中除第一行 238 之外的所有行时遇到问题。我希望这可以解决问题。
Hauke Laging 的回答和我想出了这个脚本
cat /proc/8920/maps | awk '{print$5}' | sort | uniq -c | awk 'NR>1 { sum+= $1} END {print sum}'
现在它的工作。
答案1
仅当值为 1 时才添加值是没有意义的。在这种情况下,您可以改为计算匹配行数:
grep -c " 1 " < inputfile
真正的添加是这样完成的:
awk 'NR>1 { sum+=$1 }; END { print sum }' inputfile