맥북, 리눅스에서 중복 라인 제거 하려면?
- Development/Mac
- 2021. 11. 20.
텍스트 파일에서 중복 데이터를 없애려면?
데이터를 확인하는 과정에서, 라인별 중복 데이터를 없애야 하는 경우가 있다.
또는, 몇개의 중복 데이터가 있는지 확인하고 싶을 때가 있다.
맥북 혹은 리눅스 사용자라면, 이럴 때 내장 명령어로도 쉽게 확인할 수 있다.
sort 명령어 소개
sort 명령어에 대한 설명은 아래와 같다.
The sort utility sorts text and binary files by lines. A line is a record separated from the subsequent
record by a newline (default) or NUL '\0' character (-z option). A record can contain any printable or
unprintable characters. Comparisons are based on one or more sort keys extracted from each line of input,
and are performed lexicographically, according to the current locale's collating rules and the specified
command-line options that can tune the actual sorting behavior. By default, if keys are not given, sort
uses entire lines for comparison.
sort 주요 옵션
- -u, --unique: 고유 값 추출
- -r, --reverse: 역순 정렬
uniq 명령어 소개
uniq 명령어에 대한 설명은 아래와 같다.
The uniq utility reads the specified input_file comparing adjacent lines, and writes a copy of each unique
input line to the output_file. If input_file is a single dash (`-') or absent, the standard input is read.
If output_file is absent, standard output is used for output. The second and succeeding copies of identical
adjacent input lines are not written. Repeated lines in the input will not be detected if they are not
adjacent, so it may be necessary to sort the files first.
여기서 핵심은 ajacent lines라는 점이다. 즉 인접라인에 의존성이 있다.
라인별로 처리하면서 바로 이웃라인과 똑같은지 아닌지에 따라 중복여부를 판단한다.
uniq 주요 옵션
- -c: 반복 카운트 보여주기
- -d: 중복 내용만 보여주기
테스트를 위한 테스트 파일
다음과 같은 과일 리스트(인기투표?)가 있다고 가정하자.
- 파일이름: sample.txt
- 파일내용은 아래와 같다.
banana
apple
pineapple
orange
banana
apple
strawberry
blueberry
tomato
grape
watermelon
apple
kiwi
확인해 보고자 하는 데이터 유형
리눅스 혹은 맥북 내장 명령어를 통해 다음과 같은 데이터를 확인해 볼 것이다.
- 총 과일의 종류는?
- 인기있는 과일 top 3는?
- 인기있는 과일 순서는?
- 인기없는 과일 순서는?
- 얼마나 인기 있나? (획득 투표 수)
정렬하기
$ sort sample.txt
apple
apple
apple
banana
banana
blueberry
grape
kiwi
orange
pineapple
strawberry
tomato
watermelon
아래의 명령어도 위의 명령어와 같은 실행 결과를 보여준다.
$ cat sample.txt | sort
역순 정렬하기
$ sort -r sample.txt
watermelon
tomato
strawberry
pineapple
orange
kiwi
grape
blueberry
banana
banana
apple
apple
apple
아래도 동일한 결과를 보장한다.
$ cat sample.txt | sort -r
중복 제거하기
$ sort -u sample.txt
apple
banana
blueberry
grape
kiwi
orange
pineapple
strawberry
tomato
watermelon
아래도 동일하다.
$ cat sample.txt | sort -u
uniq 명령어는 선 정렬을 한 후에 사용하자.
$ sort sample.txt | uniq
apple
banana
blueberry
grape
kiwi
orange
pineapple
strawberry
tomato
watermelon
아래의 명령어도 위와 동일하다.
$ cat sample.txt | sort | uniq
정렬을 역순으로 해도 데이터의 순서만 바뀔 뿐, 고유 데이터는 여전히 얻을 수 있다.
$ cat sample.txt | sort -r | uniq
watermelon
tomato
strawberry
pineapple
orange
kiwi
grape
blueberry
banana
apple
중복 카운트하기
$ sort sample.txt | uniq -c
3 apple
2 banana
1 blueberry
1 grape
1 kiwi
1 orange
1 pineapple
1 strawberry
1 tomato
1 watermelon
중복인 내용만 확인하기
$ sort sample.txt | uniq - d
apple
banana
상위 3개 확인하기
$ sort sample.txt | uniq -c | head -3
3 apple
2 banana
1 blueberry
'Development > Mac' 카테고리의 다른 글
맥북이 느려지고, 팬 소리가 심하다면? (feat. 이륙하는 소리) (0) | 2022.03.28 |
---|---|
[macos] shift+space로 한영전환이 잘 안된다면? (0) | 2022.03.10 |
맥북에서 권한 부여해도 블루스택 실행이 안될 때 이것도 체크해야 (0) | 2022.01.10 |
맥북 기타 용량의 정체는? 정리하는 방법은? (0) | 2021.12.20 |
Rectangle - 맥북 무료 윈도우 분할/이동/관리 프로그램 (Magnet 대체 가능) (0) | 2021.11.18 |
맥 윈도우 키보드 설정 방법 (한영키 변경 방법 포함) (0) | 2021.10.23 |
맥북으로 쉽게 글자수 세기 (0) | 2021.10.04 |
맥북 그림판이 있다고? (0) | 2021.10.03 |