
私は次のような結果を得ました。
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