编辑

编辑

我有这个输出:

  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

相关内容