編集する

編集する

私は次のような結果を得ました。

  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

おすすめ記事