본문 바로가기
IT/Linux

[uniq, sort, awk] 중복되는 행 제거하기

by 성준하이 2024. 4. 10.
반응형

리눅스에서 txt파일 등 텍스트 파일들에 대해 중복 제거하는 명령어이다.

 

먼저 아래와 같이 파일이 있다고 보면.

 

#test.txt

aaa
aaa
bbb
bbb
ccc
ccc
aaa
bbb
ccc

 

uniq 명령어를 사용

 

uniq [-옵션] test.txt

#결과
aaa
bbb
ccc
aaa
bbb
ccc

 

연속된 중복들 된 값에만 대해 제거가 되기에 이렇게 나온다.

옵션은 아래 참고 바란다.

 옵션  설명
 -c  같은 라인이 몇번 나오는지를 표시
 -d  중복되어 나오는 라인 중 한 라인만 표시
 -D  중복되는 모든 라인을 보여준다
 -N  필터링은 무시할 라인을 정한다.
 시작 라인부터 N번째 라인까지는 검사하지 않는다.
 -i  중복 라인을 한라인으로 생각하고 출력한다.
 -u  중복 라인이 없는 것만 보여준다.
 -w  N번째 문자까지만 비교대상으로 하여 uniq 명령을 수행
 -s  N번째 문자까지는 비교대상에서 제외하고 uniq 명령을 수행
 -f  N번째 필드를 비교대상에서 제외하고 uniq명령을 수행

 

sort 명령어를 사용

 

sort [-옵션] -u test.txt

#결과
aaa
bbb
ccc


정렬을 하고 중복제거를 하는 옵션을 주어서 중복이 제거 되었다.

파이프라인 을 사용하여 sort 와 uniq를 함께 사용해도 무방하다.

옵션은 아래와 같다.

 옵션  설명
 -n  라인의 각 필드를 비교하는 대상을 숫자로 한정 
 -f  영어를 정렬할 때, 대소문자 구별안함 
 -r  출력 순서를 역순으로 
 -b  앞에 붙는 공백 무시
 -t  필드 구분자 지정
 -m  정렬된 파일을 병합
 -u  정렬후, 중복행 제거
 -o  저장할 파일명을 명시, 명시하지 않으면 화면에 출력

 

awk 사용

 

사용법은 아래와 같다.

    awk [OPTION...] [awk program] [ARGUMENT...]
      OPTION
        -F        : 필드 구분 문자 지정.
        -f        : awk program 파일 경로 지정.
        -v        : awk program에서 사용될 특정 variable값 지정.
      awk program
        -f 옵션이 사용되지 않은 경우, awk가 실행할 awk program 코드 지정.
      ARGUMENT
        입력 파일 지정 또는 variable 값 지정.
  • 첫번째 필드로 중복제거
    awk '!seen[$1]++' 파일이름
  • 전체라인으로 중복제거
    awk '!seen[$0]++' 파일이름

반응형

댓글