![편집하다](https://linux55.com/image/29182/%ED%8E%B8%EC%A7%91%ED%95%98%EB%8B%A4.png)
나는 다음과 같은 결과를 얻었습니다.
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