내 열을 파일로 요약하는 스크립트를 작성하고 싶습니다. 그는 매개변수로 주어진 열의 수를 원합니다. 여러 개가 있을 수 있습니다. 이 문제를 awk로 어떻게 해결해야 할지 몰라서 몇 개의 칼럼으로 정리했습니다.
cat count.txt | awk '{ sum+=$1} END {print sum}'
예를 들어 이 코드는 열을 합산하므로 열의 개수가 일정하지 않나요? 사용자가 입력하는 내용에 따라 달라지나요?
예를 들어. 2, 5, 1 열 또는 다음번 6, 3, 2 등의 열을 합산하고 싶습니다.
답변1
첫째, 필요가 없습니다 cat
. awk는 파일을 읽는 방법을 알고 있습니다.
-v
옵션을 사용하여 열을 쉼표로 구분된 문자열로 전달한 다음 awk의 BEGIN 블록에서 문자열을 분할 해야 합니다.
awk -v cols="2,5,1" '
BEGIN {n = split(cols, ary, /,/); sum=0}
{for (i=1; i<=n; i++) sum += $(ary[i])}
END {print sum}
' count.txt
split
생성된 요소 수를 반환하므로 나중에 배열을 반복할 수 있도록 이 값을 저장해야 합니다.