Bash에서 중복 줄 제거

Olorunfemi Akinlua 2023년6월20일
  1. sortuniq를 사용하여 Bash에서 중복 라인 제거
  2. awk 명령을 사용하여 Bash에서 중복 행 제거
Bash에서 중복 줄 제거

중복 항목은 Bash 스크립트에서 부정확하거나 일관성 없는 결과와 같은 다양한 문제를 일으킬 수 있으며 스크립트를 유지 관리하기 어렵게 만들 수도 있습니다. 이러한 문제를 피하기 위해 스크립트에서 중복 항목을 제거하는 것이 종종 필요하며 Bash에서 이를 수행하는 방법은 다양합니다.

sortuniq를 사용하여 Bash에서 중복 라인 제거

Bash 스크립트에서 중복 항목을 제거하는 한 가지 방법은 sortuniq 명령을 사용하는 것입니다. sort 명령은 지정된 순서로 입력 데이터를 정렬하고 uniq 명령은 정렬된 데이터에서 중복 행을 필터링합니다.

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

arg1
arg2
arg3
arg2
arg2
arg1

위 파일에서 중복 항목을 제거하려면 다음 명령을 사용할 수 있습니다.

sort data.txt | uniq > data-unique.txt

출력(touch data-unique.txt):

arg1
arg2
arg3

이 명령은 data.txt 파일을 오름차순(기본값)으로 정렬하고 출력을 uniq 명령으로 파이프합니다. uniq 명령은 정렬된 데이터에서 중복 행을 필터링하고 그 결과를 data-unique.txt라는 새 파일에 기록합니다.

이렇게 하면 data.txt 파일에서 모든 중복 항목이 제거되고 고유한 항목이 있는 새 파일이 생성됩니다.

uniq 명령에는 중복 행만 인쇄하는 -d 옵션 또는 각 행이 나타나는 횟수를 인쇄하는 -c 옵션과 같이 동작을 제어하는 데 사용할 수 있는 여러 옵션이 있습니다. 입력에서. 예를 들어 data.txt 파일에 각 줄이 나타나는 횟수를 인쇄하려면 다음 명령을 사용할 수 있습니다.

sort data.txt | uniq -c

이 명령은 이전 명령과 유사하지만 uniq 명령에 -c 옵션을 추가합니다. 이렇게 하면 각 줄이 입력에 나타나는 횟수와 줄 자체가 인쇄됩니다.

예를 들어 결과는 다음과 같을 수 있습니다.

2 arg1
3 arg2
1 arg3

이 출력은 Line 1이 나타나는 것을 보여줍니다.

awk 명령을 사용하여 Bash에서 중복 행 제거

Bash 스크립트에서 중복 항목을 제거하는 또 다른 접근 방식은 텍스트 파일에서 수많은 작업을 실행할 수 있는 강력한 텍스트 처리 도구인 awk 명령을 사용하는 것입니다. awk 명령에는 입력에서 각 라인의 발생을 저장하고 계산할 수 있는 내장 연관 배열 데이터 구조가 있습니다.

예를 들어 이전과 동일한 파일에서 중복 항목을 제거하려면 다음 명령을 사용할 수 있습니다.

awk '!a[$0]++' data.txt > data-unique.txt

출력:

arg1
arg2
arg3

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

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

awk 명령은 !를 적용합니다. 배열 요소의 값을 부정하는 a[$0] 표현식에 대한 연산자. 이는 a 배열에서 카운트가 0인 행만 조건을 통과하고 출력에 인쇄됨을 의미합니다. 그런 다음 출력은 data.txt 파일의 고유한 항목을 포함하는 data-unique.txt라는 새 파일로 리디렉션됩니다.

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

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

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