반응형
리눅스에서 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]++' 파일이름
반응형
'IT > Linux' 카테고리의 다른 글
| vi 편집기 특정 문자열 검색 및 갯수 구하기 (19) | 2024.04.14 |
|---|---|
| 특정 파일명이 들어간 파일만 삭제 (27) | 2024.04.12 |
| Linux에서 Sleep 사용 (25) | 2024.04.03 |
| 기호 연결의 단계가 너무 많음 / too many levels of symbolic links (18) | 2024.03.15 |
| tree 구조 ls (25) | 2024.03.04 |
댓글