2022. 2. 22. 00:09ㆍLinux/Command-line
1. uniq
uniq는 연속적으로 중복된 내용을 제거하여 출력하는 유틸리티 입니다.
uniq [OPTION]... [INPUT [OUTPUT]]
option
- -i
- --ignore-case
- 대소문자 구분 x
- -c
- --count
- 반복 횟수를 prefix에 포함하여 출력
- -d
- --repeated
- 반복되어 나타난 line만 출력
- -u
- --unique
- 반복되지 않은 line만 출력
2. 예제
2.1. 예제 파일
예제를 위한 간단한 파일들을 추가하겠습니다.
cat green.txt
apple banana melon blue red red Red blue red Blue apple Banana
green.txt 파일을 줄번호 설정하여 출력하면 아래와 같이 출력됩니다.
nl green.txt
1 apple 2 banana 3 melon 4 blue 5 red 6 red 7 Red 8 blue 9 red Blue 10 apple 11 Banana
2.2. uniq 기본
별도의 옵션 설정없이 uniq를 설정할 경우, 반복되는 줄에 대한 부분을 제거하여 출력합니다.
uniq green.txt | nl
1 apple 2 banana 3 melon 4 blue 5 red 6 Red 7 blue 8 red Blue 9 apple 10 Banana
기존에 green.txt에는 5, 6 line에 동일한 내용인 red를 가지고 있었습니다.
따라서, uniq를 설정한 결과, 기존에 6 line에 있었던 red 한줄이 제거되어 출력되었습니다.
기본적으로 uniq 명령어는 대소문자를 구분하기 때문에 Red는 제거되지 않았습니다.
2.3. -i, ignore-case
-i 옵션은 ignore-case 옵션입니다.
uniq -i green.txt | nl
1 apple 2 banana 3 melon 4 blue 5 red 6 blue 7 red Blue 8 apple 9 Banana
5 line 아래에 있던 Red 가 red와 동일하게 취급하여 제거되었습니다.
2.4. sort 명령어 적용
green.txt를 대소문자 구분하지 않고, 정렬하여 uniq 적용하면 어떤 결과가 나올까?
먼저, sort만 적용한 결과입니다.
sort -f green.txt
apple apple Banana banana blue blue melon Red red red red Blue
sort 명령어의 -f 옵션은 ignore-case 옵션입니다.
※ 더 자세히 알고 싶다면 [Command-line] nl을 이용한 줄번호 설정를 참고해주세요.
그 결과에 uniq -i
를 적용하면 아래와 같이 나옵니다.
sort -f green.txt | uniq -i
apple Banana blue melon Red red Blue
2.5. -c, --count
반복된 라인 횟수를 알고 싶다면 -c 옵션을 사용하면 됩니다.
2.4. 에 -c 옵션을 추가해보면 아래와 같이 반복된 수가 prefix에 포함되어 출력됩니다.
sort -f green.txt | uniq -ic
2 apple 2 Banana 2 blue 1 melon 3 Red 1 red Blue
2.6. -d, --repeated
반복되어 나타난 line만 출력합니다.
2.4. 에 -d 옵션을 추가한 결과입니다.
sort -f green.txt | uniq -id apple Banana blue Red
2.7. -u, --unique
반복되지 않은 line만 출력합니다.
2.4. 에 -u 옵션을 추가한 결과입니다.
sort -f green.txt | uniq -iu
melon red Blue
3. 응용
현재 디렉토리에서 apple이라는 문자열이 존재하는 .txt 파일명을 출력해보자.
1) grep을 이용하여 파일 내에 apple 문자열이 존재하는 txt파일 출력
grep "apple" *.txt
2) awk 명령어로 파일명 필드값만 출력
:
필드구분자를 이용하여 line에서 파일명 필드값만 출력합니다.
grep "apple" *.txt | awk -F: '{print $1}'
2) 파일명에 uniq 적용
조회된 txt파일을 uniq 명령어를 중복된 결과 제거하기
grep "apple" *.txt | awk -F: '{print $1}' | uniq
++
- How to use uniq command in CentOS 7
- How to use uniq command in Linux
- uniq command in Linux with examples
'Linux > Command-line' 카테고리의 다른 글
[Command-line] free 명령어로 메모리 사용량 조회하기 (0) | 2022.04.21 |
---|---|
[Command-line] nl을 이용한 줄번호 설정 (0) | 2021.08.12 |
ssh 터널링을 이용한 원격 private database 접속 (0) | 2021.03.03 |
[Command-line] sort 명령어를 이용한 텍스트 정렬 (0) | 2021.01.12 |
[Command-line] tr 명령어를 이용한 character set 변환 및 삭제 (0) | 2021.01.05 |