English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
uniq 可检查文本文件中重复出现的行列。
uniq [-cdu][-f<栏位>][-s<字符 위치>][-w<字符 위치>][--help][--version][입력 파일][출력 파일]
参数:
-c或--count 在每列旁边显示该行重复出现的次数。
-d或--repeated 仅显示重复出现的行列。
-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符。
-u或--unique 仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置> 指定要比较的字符。
--help 显示帮助。
--version 显示版本信息。
[입력 파일] 정렬된 텍스트 파일을 지정합니다. 이 옵션을 지정하지 않으면 표준 입력에서 데이터를 읽습니다;
[출력 파일] 출력할 파일을 지정합니다. 이 옵션을 지정하지 않으면 내용이 표준 출력 장치(터미널)에 표시됩니다.
파일 testfile에서 2、3、5、6、7、9동일한 행의 경우 uniq 명령어를 사용하여 중복된 행을 제거할 수 있습니다. 다음 명령어를 사용하십시오:
uniq testfile
testfile의 원래 내용은 다음과 같습니다:
$ cat testfile #원래 내용 test 30 test 30 test 30 안녕하세요 95 안녕하세요 95 안녕하세요 95 안녕하세요 95 Linux 85 Linux 85
uniq 명령어를 사용하여 중복된 행을 제거한 후 다음과 같은 출력 결과가 나타납니다:
$ uniq testfile #중복된 행을 제거한 내용 test 30 안녕하세요 95 Linux 85
파일을 확인하고 파일에서 중복된 행을 제거하여 행의 시작 부분에 중복된 횟수를 표시합니다. 다음 명령어를 사용하십시오:
uniq -c testfile
결과 출력은 다음과 같습니다:
$ uniq -c testfile #중복된 행을 제거한 내용 3 test 30 #앞의 숫자는 이 행이 몇 번 나타났는지 의미합니다3번 4 안녕하세요 95 #앞의 숫자는 이 행이 몇 번 나타났는지 의미합니다4번 2 Linux 85 #앞의 숫자는 이 행이 몇 번 나타났는지 의미합니다2번
중복된 행이 인접하지 않으면 uniq 명령어는 작동하지 않습니다. 즉, 다음과 같은 파일 내용이면 uniq 명령어는 작동하지 않습니다:
$ cat testfile1 # 원래 내용 test 30 안녕하세요 95 Linux 85 test 30 안녕하세요 95 Linux 85 test 30 안녕하세요 95 Linux 85
이 때는 sort를 사용할 수 있습니다:
$ sort testfile1 | uniq 안녕하세요 95 Linux 85 test 30
각 행이 파일에서 나타나는 횟수를 계산하다:
$ sort testfile1 | uniq -c 3 안녕하세요 95 3 Linux 85 3 test 30
파일에서 중복된 행을 찾아내기:
$ sort testfile1 | uniq -d 안녕하세요 95 Linux 85 test 30