sort 와 유 니 크 명령

8130 단어
목차
  • 1.sort
  • 1.1 문법
  • 1.2 sort 인 스 턴 스
  • 1.2.1/etc/passwd 계 정 정렬
  • 1.2.2/etc/passwd 내용 은: 로 구분 되 고 세 번 째 칸 으로 정렬 됩 니 다
  • 1.2.3/etc/passwd 에 대해 6 열의 두 번 째 문자 부터 네 번 째 문자 까지 정방 향 정렬 을 한 다음 에 첫 번 째 도 메 인 을 바탕 으로 역방향 정렬 을 한다.
  • 1.2.4/etc/passwd 에 몇 개의 셸 이 있 는 지 확인 합 니 다./etc/passwd 의 일곱 번 째 도 메 인 을 정렬 한 다음 무 게 를 제거 합 니 다

  • 2.uniq
  • 2.1uniq 문법
  • 2.2uniq 실례
  • 2.2.1 정렬 되 지 않 은 파일 을 다시 가 져 가면 줄 이 없 음
  • 2.2.2 중 복 된 줄 만 표시 하고 줄 의 맨 위 에 중 복 된 횟수 만 표시 합 니 다
  • 2.2.3 중복 되 지 않 는 줄 만 표시

  • 3. 고급 용법
  • 1.sort
    sort 명령 은 File 매개 변수 가 지정 한 파일 의 줄 을 정렬 하고 결 과 를 표준 출력 에 기록 합 니 다.
    File 매개 변수 가 여러 파일 을 지정 하면 sort 명령 은 이 파일 들 을 연결 하고 파일 로 정렬 합 니 다.
    문법
    sort [- fbMnrtuk] [file or stdin] 옵션 과 인자: - f: 대소 문자 의 차 이 를 무시 합 니 다. 예 를 들 어 A 와 a 는 인 코딩 과 같 습 니 다. -b: 맨 앞의 스페이스 바 부분 무시 하기; -M: 월 이름 으로 정렬 합 니 다. 예 를 들 어 JAN, DEC 등 정렬 방법 입 니 다. -n: "순수 숫자"를 사용 하여 정렬 합 니 다 (기본 값 은 문자 형태 로 정렬 합 니 다). -r: 역방향 정렬; -u: 바로 유 니 크 입 니 다. 같은 데이터 에서 한 줄 의 대표 만 나타 납 니 다. -t: 구분자, 기본 값 은 [tab] 키 로 구분 합 니 다. -k: 그 구간 (field) 으로 정렬 한 다 는 뜻
    1.2 sort 인 스 턴 스
    1.2.1/etc/passwd 계 정 정렬
    [root@localhost ~]# sort /etc/passwd
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    elasticsearch:x:997:995:elasticsearch user:/nonexistent:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    halt:x:7:0:halt:/sbin:/sbin/halt
    kibana:x:996:994:kibana service user:/home/kibana:/sbin/nologin
    logstash:x:995:993:logstash:/usr/share/logstash:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    mysql:x:1000:1000::/home/mysql:/sbin/nologin
    named:x:25:25:Named:/var/named:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    root:x:0:0:root:/root:/bin/bash
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    

    sort 는 기본 값 으로 첫 번 째 데이터 로 정렬 되 며, 기본 값 은 문자열 로 정렬 되 기 때문에 알파벳 a 부터 정렬 됩 니 다.
    1.2.2/etc/passwd 내용 은 다음 과 같이 구분 되 고 세 번 째 칸 으로 정렬 됩 니 다.
    기본 값 은 문자열 로 정렬 되 어 있 으 며, 세 번 째 열 은 숫자 입 니 다.
    [root@localhost ~]# cat /etc/passwd |sort -t ':' -k 3n
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    named:x:25:25:Named:/var/named:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    logstash:x:995:993:logstash:/usr/share/logstash:/sbin/nologin
    kibana:x:996:994:kibana service user:/home/kibana:/sbin/nologin
    elasticsearch:x:997:995:elasticsearch user:/nonexistent:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    mysql:x:1000:1000::/home/mysql:/sbin/nologin
    

    sort 기본 값 은 오름차 순 정렬 입 니 다. 거꾸로 정렬 하려 면 다음 과 같 습 니 다.
    [root@localhost ~]# cat /etc/passwd |sort -t ':' -k 3nr
    mysql:x:1000:1000::/home/mysql:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    elasticsearch:x:997:995:elasticsearch user:/nonexistent:/sbin/nologin
    kibana:x:996:994:kibana service user:/home/kibana:/sbin/nologin
    logstash:x:995:993:logstash:/usr/share/logstash:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    named:x:25:25:Named:/var/named:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    halt:x:7:0:halt:/sbin:/sbin/halt
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    sync:x:5:0:sync:/sbin:/bin/sync
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    root:x:0:0:root:/root:/bin/bash
    

    1.2.3/etc/passwd 에 대해 서 는 6 열 두 번 째 문자 부터 네 번 째 문자 까지 정방 향 으로 정렬 한 다음 첫 번 째 도 메 인 을 바탕 으로 역방향 으로 정렬 합 니 다.
    [root@localhost ~]# cat /etc/passwd |sort -t':' -k 6.2,6.4 -k 1r   
    bin:x:1:1:bin:/bin:/sbin/nologin
    mysql:x:1000:1000::/home/mysql:/sbin/nologin
    kibana:x:996:994:kibana service user:/home/kibana:/sbin/nologin
    elasticsearch:x:997:995:elasticsearch user:/nonexistent:/sbin/nologin
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    logstash:x:995:993:logstash:/usr/share/logstash:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    named:x:25:25:Named:/var/named:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    

    1.2.4/etc/passwd 에 몇 개의 셸 이 있 는 지 확인 합 니 다./etc/passwd 의 일곱 번 째 도 메 인 을 정렬 한 다음 에 다시 시작 합 니 다.
    [root@localhost ~]# cat /etc/passwd |sort -t':' -k 7 -u
    root:x:0:0:root:/root:/bin/bash
    sync:x:5:0:sync:/sbin:/bin/sync
    halt:x:7:0:halt:/sbin:/sbin/halt
    bin:x:1:1:bin:/bin:/sbin/nologin
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    

    2.uniq
    유 니 크 명령 은 정렬 된 파일 의 중복 줄 을 제거 할 수 있 습 니 다.
    그래서 유 니 크 는 sort 와 자주 사용 합 니 다.즉, 유 니 크 가 역할 을 하기 위해 서 는 모든 중복 행 이 인접 해 야 한 다 는 것 이다.
    2.1uniq 문법
    uniq [- icu] 옵션 과 인자: - i: 대소 문자 의 차 이 를 무시 합 니 다. -c: 계수 진행 - u: 유일한 줄 만 표시
    2.2uniq 실례
    2.2.1 정렬 되 지 않 은 파일 을 다시 가 져 가면 줄 이 없 음 을 발견 할 수 있 습 니 다.
    [root@localhost ~]# cat test
    hello
    world
    ni
    hao
    hello
    world
    hao
    hello
    hao
    [root@localhost ~]# uniq test
    hello
    world
    ni
    hao
    hello
    world
    hao
    hello
    hao
    

    먼저 파일 을 정렬 한 다음 에 다시 하 다.
    [root@localhost ~]# cat test|sort|uniq
    hao
    hello
    ni
    world
    

    줄 의 첫 번 째 위치 에서 이 줄 의 중복 횟수 를 출력 합 니 다.
    [root@localhost ~]# cat test|sort|uniq -c
          3 hao
          3 hello
          1 ni
          2 world
    

    2.2.2 중 복 된 줄 만 표시 하고 줄 의 맨 위 에 중 복 된 횟수 만 표시 합 니 다.
    [root@localhost ~]# cat test|sort|uniq -dc
          3 hao
          3 hello
          2 world
    

    2.2.3 중복 되 지 않 는 줄 만 표시
    [root@localhost ~]# cat test|sort|uniq -u
    ni
    

    3. 고급 용법
    cat log |awk -F'|' '{print $3}'|sort|uniq -c|sort -nr|head -5
    
    """
    1. 查看log
    2. 使用awk工具, 指定分隔符为'|', 输出第三段
    3. <2>作为sort的输出进行排序
    4. <3>作为uniq的输入进行去重, -c参数显示重复数量
    5. <4>作为sort的输入进行排序, -nr指定按照重复数量进行排序, 并且反序
    6. <5>作为head的输入, 输出前5条数据
    

    좋은 웹페이지 즐겨찾기