awk '{ for (i = 1; i <= NF; i++) sum[i]+=$i} END{for (i in sum) print sum[i]}' file1 > file2
이는 레코드별 합계에는 도움이 되지만 유사한 구성표는 열별 합계에는 도움이 되지 않습니다(아마도). n 열에 대한 열별 추가를 일반화하는 방법은 무엇입니까?
cat file1
23 46 45
45 57 58
56 78 74
cat file2
114
160
208
답변1
각 레코드의 필드 합계를 계산하려면 다음과 같이 하십시오.
awk '{sum = 0; for (i = 1; i <= NF; i++) sum += $i; print sum}' < file1 > file2
중괄호로 시작행동선행 없이 각 입력 행에서 실행되는 명령문입니다.상황이렇게 하면 실행이 다음을 만족하는 라인으로 제한됩니다.상황.
각 줄:
- 변수를
sum
0으로 초기화합니다. - 필드 #1에서 시작하여 마지막 필드(특수 변수)로 끝나며
NF
해당 필드의 값( )만큼 증가하면서 필드를 반복합니다.sum
$i
- 변수의 값을 인쇄합니다
sum
.
답변2
이는 awk보다 약간 느리지만 매우 간결합니다.
perl -MList::Util=sum0 -lane 'print sum0(@F)' file1
그것은 사용한다sum0
핵심 List::Util 모듈의 기능입니다.