Linux에서 파일의 고유한 줄 수 계산

Olorunfemi Akinlua 2023년6월20일
  1. 정렬유니크 명령을 사용하여 파일의 고유 행 수 계산
  2. awk 명령을 사용하여 파일의 고유 라인 수 계산
Linux에서 파일의 고유한 줄 수 계산

파일의 고유한 줄 수를 세는 것은 Linux의 일반적인 작업이며 이 작업을 수행하는 데 여러 가지 도구와 방법을 사용할 수 있습니다. 일반적으로 적절한 방법은 입력 파일의 크기, 성능 및 메모리 요구 사항, 데이터의 형식 및 내용과 같은 작업의 특정 요구 사항 및 제약 조건에 따라 달라집니다.

정렬유니크 명령을 사용하여 파일의 고유 행 수 계산

Linux에서 파일의 고유 행을 계산하는 한 가지 방법은 sortuniq 명령을 사용하는 것입니다. sort 명령은 지정된 순서로 입력 데이터를 정렬하고 uniq 명령은 정렬된 데이터에서 중복 행을 필터링합니다.

data.txt 파일에는 이 문서의 예제에 대한 아래 내용이 포함되어 있습니다.

arg1
arg2
arg3
arg2
arg2
arg1

파일의 고유 라인 수를 계산하려면 다음 명령을 사용할 수 있습니다.

sort data.txt | uniq -c | wc -l

출력:

3

이 명령은 data.txt 파일을 오름차순(기본값)으로 정렬하고 출력을 uniq 명령으로 파이프합니다. uniq 명령은 정렬된 데이터에서 중복 행을 필터링하고 각 행이 입력에 나타나는 횟수를 추가합니다.

그런 다음 출력은 wc 명령으로 연결되어 입력의 라인 수를 계산하고 결과를 터미널에 인쇄합니다.

정렬유니크 명령은 파일의 고유 행을 세는 간단하고 효율적인 도구이며 가장 일반적인 시나리오에 적합합니다. 그러나 대용량 파일의 경우 속도가 느리고 메모리를 많이 사용할 수 있는 입력 데이터 정렬과 같은 몇 가지 제한 사항과 단점이 있습니다.

또한 uniq 명령은 정렬된 데이터에서 인접한 중복 행만 제거하므로 일부 입력에 대해 예상한 결과를 제공하지 않을 수 있습니다.

awk 명령을 사용하여 파일의 고유 라인 수 계산

Linux에서 파일의 고유한 줄을 계산하는 또 다른 방법은 텍스트 파일에서 다양한 작업을 수행할 수 있는 강력한 텍스트 처리 도구인 awk 명령을 사용하는 것입니다. awk 명령에는 입력에서 각 라인의 발생을 저장하고 계산할 수 있는 내장 연관 배열 데이터 구조가 있습니다.

예를 들어 data.txt라는 파일의 고유한 줄 수를 계산하려면 다음 명령을 사용할 수 있습니다.

awk '!a[$0]++' data.txt | wc -l

출력:

3

이 명령은 awk 명령을 사용하여 data.txt 파일을 읽고 각 입력 라인에 간단한 조건을 적용합니다. 이 조건은 !a[$0]++ 표현식을 사용하며, 각 행을 읽을 때 a 배열의 값을 증가시킵니다.

이는 각 라인이 입력에 나타나는 횟수를 효과적으로 세고 a 배열에 카운트를 저장합니다.

awk 명령은 !를 적용합니다. 배열 요소의 값을 부정하는 a[$0] 표현식에 대한 연산자. 이는 a 배열에서 카운트가 0인 행만 조건을 통과하고 출력에 인쇄됨을 의미합니다.

그런 다음 출력은 wc 명령으로 연결되어 입력의 라인 수를 계산하고 결과를 터미널에 인쇄합니다.

awk 명령은 동작을 제어하고 출력을 사용자 지정하는 데 사용할 수 있는 여러 옵션과 기능도 제공합니다. 예를 들어 -F 옵션을 사용하여 다른 필드 구분 기호를 지정하거나 -v 옵션을 사용하여 스크립트에서 사용할 수 있는 변수를 정의할 수 있습니다.

또한 printf 기능을 사용하여 다양한 방법으로 awk 명령의 출력 형식을 지정할 수 있습니다.

다음은 이러한 기능을 사용하여 data.txt라는 파일의 고유 라인 수를 계산하는 보다 복잡한 awk 스크립트의 예입니다. 여기서 각 라인은 쉼표로 구분된 필드 목록입니다.

awk -F, '{a[$1]++} END {for (i in a) { printf "%s,%d\n", i, a[i] }}' data.txt | wc -l

출력:

3

이 스크립트는 -F 옵션을 사용하여 , 문자를 필드 구분 기호로 지정하고 입력에서 각 필드의 발생을 저장하고 계산하는 데 사용되는 a 배열을 정의합니다.

그런 다음 awk 명령은 data.txt 파일의 각 줄을 읽고 읽은 각 필드에 대해 a 배열의 값을 증가시킵니다. 이것은 각 고유 필드가 입력에 나타나는 횟수를 효과적으로 계산합니다.

스크립트의 END 블록은 입력의 모든 라인을 읽은 후 실행되며 for 루프를 사용하여 a 배열을 반복합니다. printf 기능은 awk 명령의 출력 형식을 지정하는 데 사용되며 각 고유 필드와 그 수를 출력에 인쇄합니다.

그런 다음 출력은 wc 명령으로 연결되어 입력의 라인 수를 계산하고 결과를 터미널에 인쇄합니다.

결론적으로 Linux에서 파일의 고유한 줄을 계산하는 방법에는 여러 가지가 있으며 적절한 방법은 작업의 특정 요구 사항과 제약 조건에 따라 다릅니다. sortuniq 명령은 고유한 라인을 계산하기 위한 간단하고 효율적인 도구이며 awk 명령은 스크립트의 출력 및 동작을 사용자 지정하기 위한 고급 기능과 옵션을 제공합니다.

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

관련 문장 - Linux File