Awk : awk 터미널 명령을 사용하여 쉘 스크립팅 학습

Awk : awk 터미널 명령을 사용하여 쉘 스크립팅 학습

Awk : awk 터미널 명령을 사용하여 쉘 스크립팅 학습

GNU / Linux 유형의 무료 운영 체제에서 "awk"명령은 매우 강력한 명령으로, 다른 명령이나 명령의 데이터를 처리 할 때 더 많은 제어 권한을 갖도록 도와줍니다. AWK라는 이름은 저자의 성 이니셜에서 유래 : Alfred A호, 피터 W아인 버거, 브라이언 K에니 간.

이 명령은 텍스트 처리를위한 스크립팅 언어를 제공하여 변수 정의, 문자열 및 산술 연산자 사용, 흐름 제어 및 순환 사용, 형식화 된 보고서 생성을 수행 할 수 있습니다. 실제로 Awk는 단순한 패턴 처리 명령이 아니라 전체 의미 분석 언어입니다.

"awk"명령 소개

AWK는 UNIX 파이프 라인의 기능을 최대화하여 데이터를 관리 (처리 / 추출)하기위한 최초의 매우 인기있는 콘솔 유틸리티 중 하나였습니다. 이 유틸리티에서 제공하는 언어는 현재 거의 모든 최신 UNIX 유형 운영 체제의 표준이므로 기본 UNIX 사양의 일부이므로 일반적으로 대부분 기본적으로 이미 설치되어 있습니다.

가장 일반적인 구문은 awk '프로그램'파일이며 '프로그램'은 다음과 같습니다. pattern {action} pattern {action}. 이 명령은 파일 입력을 한 번에 한 줄씩 읽습니다. 각 행은 순서대로 각 패턴과 비교됩니다. 행과 일치하는 각 패턴에 대해 해당 조치가 수행됩니다.

다음과 같은 간단한 예 :

awk -F: '$1=="root" {print}' /etc/passwd

/ etc / passwd의 각 행의 루트인지 첫 번째 필드를 요청하고 필드 구분 기호로 -F :와 함께 ":"을 고려하여 인쇄합니다.

소개 예제 Awk

실용적인 예

가장 많이 사용되는 명령 목록

가장 자주 사용하는 것부터 가장 적은 순서로 시스템 터미널의 이력을 기준으로 목록을 봅니다.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

예 :

예 1 : Awk 명령

각 호스트의 연결 수를 나타내는 그래프 (표)

호스트에서 각 IP 주소로의 총 연결 수를 표시하는 ASCII 텍스트 기반 그래프를 만듭니다.

netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'

예 :

예 2 : Awk 명령

크기별 디렉토리 목록

g, m 및 k 문자를 사용하여 크기에 해당하는 레이블을 표시하는 가장 큰 것부터 가장 작은 것까지 현재 경로의 디렉토리 목록을 화면에 인쇄합니다.

du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'

예 :

예 3 : Awk 명령

네트워크 인터페이스의 트래픽 표시

지정된 네트워크 인터페이스에 대한 인바운드 및 아웃 바운드 데이터 소비를 온라인으로 킬로바이트 (kb)로 봅니다.

while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done

예 :

피보나치 수열 구하기

생성 할 2 개의 기본 숫자가 주어지면 피보나치 패턴에 따라 X 수량 목록을 만듭니다.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

예 :

예 5 : Awk 명령

크기별 파일 구조의 그래픽 목록

그래픽 (막대) 및 숫자 표시와 함께 운영 체제의 루트에있는 모든 폴더의 목록을 해당 크기의 백분율로 얻습니다.

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

예 :

예 6 : Awk 명령

디렉토리의 파일 유형 요약 나열

디렉토리에 포함 된 파일 유형 목록과 이에 해당하는 파일 수를 표시합니다.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

예 :

예 8 : Awk 명령

awk 명령을 사용하는 이러한 명령 줄 예제가 매우 유용하기를 바랍니다. 또한 콘솔에서 직접 사용하거나 스크립트 (자동화 된 작업)에 삽입하여 간접적으로 사용하는 데 사용됩니다.

Shell Scripting에 대한 다음 게시물에서는 다른 명령을 살펴 보겠습니다.

"grep"명령에 대해 자세히 알아 보려면이 링크를 방문하십시오 "DEBIAN 위키”또한 자체 블로그에서 Shell Scripting에 대해 자세히 알아보고 싶다면, 여기를 클릭하여 주제에 대한 다른 출판물을 볼 수 있습니다. FromLinux의 스크립팅


기사의 내용은 우리의 원칙을 준수합니다. 편집 윤리. 오류를보고하려면 여기에.

코멘트를 남겨주세요

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   턱시토

    나는 첫 번째 예만 이해했고 다른 것은 아무것도 이해하지 못했습니다 🙁