셸 필터의 구체적인 사용

7844 단어 Shell여과기
우리는 이미 몇 개의 명령을 파이프 부호를 통해 조합하면 하나의 파이프를 형성할 수 있다는 것을 알고 있다.일반적으로 이런 방식으로 사용하는 명령을 필터라고 부른다.필터는 입력을 가져와 어떤 방식으로 내용을 수정한 다음 출력합니다.
간단히 말하면 필터는 다음과 같은 두 가지로 요약할 수 있다.
  • 만약에 리눅스 명령이 표준 입력에서 입력 데이터를 수신하고 표준 출력에서 출력 데이터 (결과) 를 생성한다면 이 명령은 필터라고 부른다.
  • 필터는 일반적으로 Linux 파이프와 함께 사용됩니다
  • 필터로 자주 사용되는 명령은 다음과 같습니다.
    명령
    설명
    awk
    텍스트 처리에 사용되는 해석적 프로그래밍 언어로 일반적으로 데이터 추출과 보고 도구로 사용된다.
    cut
    각 입력 파일 (지정된 파일이 없으면 표준 입력) 의 각 행의 지정된 부분을 표준 출력으로 출력하는 데 사용됩니다.
    grep
    하나 이상의 파일에서 지정한 패턴과 일치하는 줄을 검색할 수 있습니다.
    tar
    아카이브를 위한 응용 프로그램입니다.
    head
    파일의 시작 부분을 읽는 데 사용됩니다(기본값은 10줄).지정한 파일이 없으면 표준 입력에서 읽습니다.
    paste
    파일을 결합하는 데 사용되는 행입니다.
    sed
    텍스트를 필터링하고 변환하는 흐름 편집기입니다.
    sort
    텍스트 파일의 줄을 정렬하는 데 사용됩니다.
    split
    파일을 블록으로 분할하는 데 사용됩니다.
    strings
    파일에서 인쇄할 수 있는 문자열을 인쇄하는 데 사용됩니다.
    tac
    cat 명령의 기능과 반대로 파일이나 연결 파일을 거꾸로 표시하는 데 사용됩니다.
    tail
    파일의 끝 부분을 표시하는 데 사용됩니다.
    tee
    표준 입력에서 내용을 읽고 표준 출력과 파일에 쓸 수 있습니다.
    tr
    문자를 변환하거나 삭제할 수 있습니다.
    uniq
    반복된 행을 보고하거나 무시할 수 있습니다.
    wc
    파일의 총 점, 단어 수 또는 바이트 수를 인쇄하는 데 사용됩니다.
    다음은 필터의 사용을 몇 가지 실례를 통해 보여 드리겠습니다.

    파이프에서awk 명령 사용하기


    awk 명령의 구체적인 사용법에 대해 여러분 스스로 배워 주십시오. 이 절에서 우리는 단지 몇 가지 간단한 실례를 통해awk 명령이 파이프에서 사용되는 것을 이해합니다.
    인스턴스 1
    시스템의 모든 계정 이름을 보고 이름의 알파벳 순서대로 정렬합니다.
    
    [jb51.net]$ awk -F: '{print $1}' /etc/passwd | sort
    adm
    apache
    avahi
    avahi-autoipd
    bin
    daemon
    dbus
    ftp
    games
    ...
    
    상례에서 사칭: 열 구분자로 파일/etc/passwd의 내용을 여러 열로 나누고 첫 번째 열의 정보 (즉 사용자 이름) 를 인쇄한 다음, 출력을 파이프를 통해sort 명령으로 보냅니다.
    인스턴스 2
    현재 계정에서 가장 자주 사용하는 명령 10개를 열거합니다.
    
    [jb51.net]$ history | awk '{print $2}' | sort | uniq -c | sort -rn | head
    140 echo
     75 man
     71 cat
     63 su
     53 ls
     50 vi
     47 cd
     40 date
     26 let
     25 paste
    
    상례에서history 명령은 출력을 파이프를 통해awk 명령으로 보냅니다. awk 명령은 기본적으로 공백을 열 구분자로 사용하고history의 출력을 두 열로 나누며 두 번째 열의 내용을 출력으로 파이프를 통해sort 명령으로 보냅니다. sort 명령을 사용하여 정렬한 후에 출력을 파이프를 통해 uniq 명령으로 보냅니다. uniq 명령을 사용하여 역사 명령이 반복되는 횟수를 집계했습니다.또한sort 명령으로 uniq 명령의 출력을 중복 횟수에 따라 높은 순서에서 낮은 순서로 정렬하고, 마지막으로head 명령을 사용하여 기본적으로 상위 10개의 정보를 표시합니다.
    인스턴스 3
    현재 시스템의 총 메모리 크기를 표시합니다. 단위는 KB입니다.
    
    [jb51.net]$ free | grep Mem | awk '{print $2}'
    2029860
    

    파이프에서 cut 명령 사용하기


    cut 명령은 텍스트 처리에 사용됩니다.이 명령을 사용하면 파일에 지정된 열의 내용을 추출할 수 있습니다.
    인스턴스 1
    시스템에서 로그인 셸이 "/bin/bash"사용자 이름과 해당 사용자 홈 디렉터리에 대한 정보를 보려면 다음과 같이 하십시오.
    
    [jb51.net]$ grep "bin/bash" /etc/passwd | cut -d: -f1,6
    root:/root
    mozhiyan:/home/mozhiyan
    
    만약에 Linux 시스템에 대해 알고 있다면,/ctc/passwd 파일은 사용자 계정의 정보를 저장하는 데 사용되고, 이 파일의 모든 줄은 하나의 계정의 정보를 기록하며, 모든 필드는 사칭으로 구분되며, 첫 번째 필드는 계정의 계정 이름이고, 여섯 번째 필드는 계정의 홈 디렉터리의 경로입니다.
    인스턴스 2
    현재 시스템의 CPU 유형을 봅니다.
    
    [jb51.net]$ cat /proc/cpuinfo | grep name | cut -d: -f2 | uniq
    Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
    
    위의 예에서 cat/proc/cpuinfo | grep name 명령을 실행하면 다음과 같습니다.
    
    [jb51.net]$ cat /proc/cpuinfo | grep name
    model name  : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
    model name  : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
    model name  : Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
    model name  : Intel(R) Core(TM) i5-2520M CPU 0 2.50GHz
    
    그리고 우리는 cut 명령을 사용하여 상술한 출력 내용을 사칭으로 구분하고 내용을 두 열로 나누어 두 번째 열의 내용을 표시하며 마지막으로 uniq 명령을 사용하여 중복된 줄을 제거합니다.
    인스턴스 3
    현재 디렉터리의 하위 목록 수를 보십시오.
    
    [jb51.net]$ ls -l | cut -c 1 | grep d | wc -l
    5
    
    위의 파이핑 명령은 주로 다음과 같습니다.
  • 명령 ls-l 출력의 내용에서 줄마다 첫 번째 문자는 파일의 형식을 나타내고, 첫 번째 문자가 d이면 파일의 형식은 디렉터리를 나타냅니다
  • 명령cut-c1은 줄마다 첫 번째 문자를 캡처합니다..
  • 파일 형식을 가져오려면 grepd를 명령합니다. 디렉터리의 줄입니다.
  • 명령 wc-l는grep 명령 출력 결과를 얻는 데 사용되는 줄 수, 즉 디렉터리 개수..
  • 파이프에서grep 명령 사용하기


    grep 명령은 파이프에서 비교적 자주 사용하는 명령입니다.
    인스턴스 1
    시스템 로그 파일의 오류 정보를 보십시오.
    
    [jb51.net]$ grep -i "error:" /var/log/messages | less
    
    
    인스턴스 2
    시스템의 HTTP 서비스에 대한 프로세스 정보를 봅니다.
    
    [jb51.net]$ ps auxwww | grep httpd
    apache 18968 0.0 0.0 26472 10404 ?  S  Dec15  0:01 /usr/sbin/httpd
    apache 18969 0.0 0.0 25528 8308 ?  S  Dec15  0:01 /usr/sbin/httpd
    apache 18970 0.0 0.0 26596 10524 ?  S  Dec15  0:01 /usr/sbin/httpd
    
    인스턴스 3
    프로그램 목록에 있는 모든 명령 이름에 키워드 zip이 포함된 명령을 찾습니다.
    
    [jb51.net]$ ls /bin /usr/bin | sort | uniq | grep zip
    bunzip2
    bzip2
    bzip2recover
    gunzip
    gzip
    
    인스턴스 4
    시스템에 설치된kernel 버전과 관련된kernel 패키지를 보십시오.
    
    [jb51.net]$ rpm -qa | grep kernel
    kernel-2.6.18-92.e15
    kernel-debuginfo-2.6.18-92.e15
    kernel-debuginfo-common-2.6.18-92.e15
    kernel-devel-2.6.18-92.e15
    인스턴스 5
    /etc 디렉토리에서 IP 주소가 포함된 모든 파일을 찾습니다.
    
    [jb51.net]$ find /etc -type f -exec grep '[0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*' {} \;
    

    파이프에서 tar 명령 사용하기


    tar 명령은 Linux 시스템에서 가장 자주 사용하는 파일 패키지 프로그램입니다.
    인스턴스 1
    tar 명령을 사용하여 디렉터리의 전체 구조를 복사할 수 있습니다.
    
    [jb51.net]$ tar cf - /home/mozhiyan | ( cd /backup/; tar xf - )
    
    인스턴스 2
    네트워크에 걸쳐 디렉터리의 전체 구조를 복제하다.
    
    [jb51.net]$ tar cf - /home/mozhiyan | ssh remote_host "( cd /backup/; tar xf - )"
    
    
    인스턴스 3
    네트워크에 걸쳐 디렉터리의 전체 구조를 압축하여 복제하다.
    
    [jb51.net]$ tar czf - /home/mozhiyan | ssh remote_host "( cd /backup/; tar xzf - )"
    
    인스턴스 4
    tar 압축 파일의 크기를 검사합니다. 단위는 바이트입니다.
    
    [jb51.net]$ cd /; tar cf - etc | wc -c
    215040
    인스턴스 5
    tar 압축 파일을 tar로 압축했는지 확인하십시오.gz 귀속 파일 다음에 차지하는 크기.
    
    [jb51.net]$ tar czf - etc.tar | wc -c
    58006
    인스턴스 6
    tar 압축 파일을 tar로 압축했는지 확인하십시오.bz2는 가랑이 파일 뒤에 차지하는 크기입니다.
    
    [jb51.net]$ tar cjf - etc.tar | wc -c
    50708

    파이프에서 head 명령 사용하기


    때때로, 당신은 명령의 모든 출력을 필요로 하지 않고, 명령의 앞줄의 출력만 필요로 할 수도 있다.이때 헤드 명령을 사용할 수 있습니다. 명령의 앞줄만 출력합니다.기본 출력 줄 수는 10줄입니다.
    인스턴스 1
    ls 명령의 첫 열 줄 출력을 표시합니다.
    
    [jb51.net]$ ls /usr/bin | head
    addftinfo
    afmtodit
    apropos
    arch
    ash
    awk
    base64
    basename
    bash
    bashbug
    
    인스턴스 2
    ls 명령의 첫 다섯 줄 내용을 표시합니다.
    
    [jb51.net]$ ls / | head -n 5
    bin
    cygdrive
    Cygwin.bat
    Cygwin.ico
    Cygwin-Terminal.ico
    

    파이프에서 uniq 명령 사용하기


    uniq 명령은 중복된 줄을 보고하거나 삭제하는 데 사용됩니다.테스트 파일을 사용하여 파이프에서 uniq 명령을 사용하는 실례를 설명합니다. 그 내용은 다음과 같습니다.
    
    [jb51.net]$ cat testfile
    This line occurs only once.
    This line occurs twice.
    This line occurs twice.
    This line occurs three times.
    This line occurs three times.
    This line occurs three times.
    
    인스턴스 1
    출력에서 중복된 줄을 제거합니다.
    
    [jb51.net]$ sort testfile | uniq
    This line occurs only once.
    This line occurs three times.
    This line occurs twice.
    
    인스턴스 2
    출력에서 각 반복된 행이 나타나는 횟수를 표시하고 횟수에 따라 거꾸로 표시합니다.
    
    [jb51.net]$ sort testfile | uniq -c | sort -nr
    3 This line occurs three times.
    2 This line occurs twice.
    1 This line occurs only once.
    

    파이프에서 wc 명령 사용하기


    wc 명령은 텍스트 흐름에 포함된 문자 수, 단일 동수, 줄 수를 통계하는 데 사용됩니다.
    인스턴스 1
    현재 시스템에 로그인한 사용자 수를 집계합니다.
    
    [jb51.net]$ who | wc -l
    
    인스턴스 2
    현재 Linux 시스템의 프로세스 수를 집계합니다.
    
    [jb51.net]$ ps -ef | wc -l
    셸 필터의 구체적인 사용에 관한 이 글은 여기까지 소개되었습니다. 셸 필터에 대한 더 많은 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!

    좋은 웹페이지 즐겨찾기