Linux

쉘 필터 - 1장

빼이 2020. 10. 20. 12:30
반응형

파이프 문자를 통해 여러 명령을 결합하면 파이프가 형성된다는 것을 이미 알고 있습니다. 일반적으로 이러한 방식으로 사용되는 명령을 필터라고합니다. 필터는 입력을 받아 어떤 방식 으로든 내용을 수정 한 다음 출력합니다.


간단히 말해서 필터는 다음 두 가지 요점으로 요약 할 수 있습니다.

  • Linux 명령이 표준 입력에서 입력 데이터를 수신하고 표준 출력에서 ​​출력 데이터 (결과)를 생성하는 경우이 명령을 필터라고합니다.
  • 필터는 일반적으로 Linux 파이프와 함께 사용됩니다.

필터로 일반적으로 사용되는 명령은 다음과 같습니다.

명령

 기술

 awk

 텍스트 처리에 사용되는 설명 프로그래밍 언어는 일반적으로 데이터 추출 및보고 도구로 사용됩니다.

 cut

 각 입력 파일의 각 행에서 지정된 부분 (파일이 지정되지 않은 경우 표준 입력)을 표준 출력으로 출력하는 데 사용됩니다.

 grep

 하나 이상의 파일에서 지정된 패턴과 일치하는 행을 검색하는 데 사용됩니다.

 tar

 파일을 보관하는 데 사용되는 응용 프로그램입니다.

 head

 파일의 시작 부분을 읽는 데 사용됩니다 (기본값은 10 줄). 파일이 지정되지 않으면 표준 입력에서 읽습니다.

 paste

 파일을 병합하는 데 사용되는 줄입니다.

 sed

 텍스트 필터링 및 변환을위한 스트림 편집기.

 sort

 텍스트 파일의 행을 정렬하는 데 사용됩니다.

 split

 파일을 블록으로 나누는 데 사용됩니다.

 strings

 파일에서 인쇄 가능한 문자열을 인쇄하는 데 사용됩니다.

 tac

 cat 명령의 기능과 달리 파일을 역순으로 표시하거나 파일을 링크하는 데 사용됩니다.

 tail

 파일의 끝을 표시하는 데 사용됩니다.

 tee

 표준 입력에서 내용을 읽고 표준 출력 및 파일에 쓰는 데 사용됩니다.

 tr

 문자를 변환하거나 삭제하는 데 사용됩니다.

 uniq

 중복 행을보고하거나 무시하는 데 사용됩니다.

 wc

 파일의 총 줄, 단어 또는 바이트 수를 인쇄하는 데 사용됩니다.


다음으로 몇 가지 예를 통해 필터 사용을 보여줍니다.


★ 파이프 라인에서 awk 명령 사용

awk 명령의 특정 사용법에 대해서는 직접 배우십시오.이 섹션에서는 파이프 라인에서 awk 명령의 사용을 이해하기 위해 몇 가지 간단한 예제 만 사용합니다.

예 1

시스템의 모든 계정 이름을보고 이름을 기준으로 알파벳순으로 정렬합니다.

[root] $ awk -F : '{print $ 1}'/ etc / passwd | sort

adm

apache

avahi

avahi-autoipd

bin

daemon

dbus

ftp

games

...


위의 예에서 콜론을 :컬럼 구분자로 사용하고 / etc / passwd 파일의 내용을 여러 컬럼으로 나누고 첫 번째 컬럼의 정보 (즉, 사용자 이름)를 인쇄 한 다음 출력을 파이프를 통해 sort 명령으로 보냅니다.


예 2

현재 계정에 대해 가장 자주 사용되는 10 개의 명령을 나열합니다.

[root] $ history | awk '{print $ 2}'| sort | uniq -c | sort -rn | head

140 echo

 75 man

 71 cat

 63 su

 53 ls

 50 vi

 47cd

 40 date

 26 let

 25 paste


위의 예에서 history 명령은 파이프를 통해 awk 명령에 출력을 전송합니다. awk 명령은 기본적으로 공백을 열 구분 기호로 사용하고, 내역 출력을 두 개의 열로 나누고, 두 번째 열의 내용을 파이프를 통해 정렬 명령에 대한 출력으로 보냅니다. sort 명령으로 정렬 한 후 출력은 파이프를 통해 uniq 명령으로 전송됩니다. uniq 명령은 과거 명령의 반복 발생 횟수를 계산하는 데 사용되며, uniq 명령의 출력은 sort 명령으로 반복 횟수에 따라 정렬되고 마지막으로 헤드가 사용됩니다. 이 명령은 기본적으로 상위 10 개 정보를 나열합니다.


예제 3

현재 시스템의 총 메모리 크기 (KB)를 표시합니다.

  • [root] $ free | grep Mem | awk '{print $ 2}'
  • 2029860


반응형