Bash를 사용하여 텍스트 파일의 숫자 목록 합계

Faaiq Bilal 2023년6월20일
Bash를 사용하여 텍스트 파일의 숫자 목록 합계

이 튜토리얼에서는 Bash 스크립팅을 사용하여 파일의 숫자 목록을 합산하는 여러 가지 방법을 다룹니다. 첫 번째 방법은 paste 명령을 사용하는 것이며, 기존 파일을 사용하는 경우와 stdin을 사용하여 파일을 읽는 두 가지 경우에 대해 설명합니다.

마지막으로 합계를 구하는 cutawk 명령에 대해 설명합니다.

Bash를 사용하여 텍스트 파일의 숫자 목록 합계

아래에 설명된 방법은 numbers.txt라는 제목의 입력 파일이 있다고 가정합니다.

숫자.txt 파일:

1
2
3
4
5
6
7
8
9
10

기존 파일 사용

모든 숫자가 간단한 텍스트 파일에 저장되어 있고 각 숫자가 별도의 줄에 있는 경우 Bash에서 다음 명령을 호출하고 합계를 얻을 수 있습니다.

명령:

paste -sd+ numbers.txt | bc

출력:

55

stdin(표준 입력) 사용

다음 명령은 파일에서 읽고 숫자의 합계를 얻을 수 있습니다.

명령:

cat numbers.txt | paste -sd+ | bc

출력:

55

이 경우 cat numbers.txt 명령을 사용하여 파일에서 읽습니다. 이 명령은 숫자 목록을 반환하는 다른 명령으로 대체할 수 있습니다.

paste에는 POSIX 정의 사양이 있지만 모든 구현이 동일한 것은 아닙니다. 동일한 출력을 얻으려면 Mac OS에서 다음 명령을 사용해야 합니다.

명령:

<cmd> | paste -sd+ - | bc

잘라내기 명령 사용

여러 열이 있는 텍스트 파일이 있고 특정 열의 합계를 구하려고 한다고 가정합니다. cut 명령을 사용하여 이를 달성할 수 있습니다.

다음과 같이 정의된 numbers.txt 파일이 있다고 가정합니다.

1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1

아래 명령을 사용하여 각 열을 개별적으로 합산할 수 있습니다.

명령:

cat numbers.txt | cut -d ' ' -f 2 | paste -sd+ | bc -l

-f 뒤의 인수는 합산할 열 번호를 나타냅니다. 이 경우 열 번호의 카운트는 0이 아니라 1로 시작한다는 점에 유의해야 합니다.

-f 플래그에 대해 전달된 2를 추가했으므로 두 번째 열의 합계를 얻습니다.

출력:

10

awk 명령 사용

작성자의 이름을 딴 awk 명령은 이전 방법보다 작업에 더 적합합니다. 측정할 때 awk는 이전 방법보다 훨씬 더 잘 수행됩니다.

명령:

awk '{s+=$1} END {print s}' numbers.txt

출력:

55

numbers.txt를 숫자가 포함된 파일 이름으로 바꿀 수 있습니다. 또한 우수한 성능을 부분적으로 담당하는 cat을 통해 파일 읽기를 우회할 수 있습니다.

관련 문장 - Bash Math