> php教程 > PHP开发 > AWK 명령 사용법

AWK 명령 사용법

高洛峰
풀어 주다: 2016-12-12 16:02:01
원래의
1402명이 탐색했습니다.

awk의 가장 기본적인 기능은 파일이나 문자열에 지정된 규칙을 기반으로 정보를 찾아 추출하는 것입니다. 처리를 위해 한 줄을 여러 "필드"로 나누는 데 사용됩니다. 작은 데이터 처리에 적합합니다.

예:

cat /etc/passwd | awk '{FS=":"}$3 < 10 {print $1 "t" $3}' 설명: 파일 /etc /passwd는 ":"으로 구분되며, 세 번째 열의 데이터가 10 미만인지 확인하고, 계좌 번호와 세 번째 열만 표시합니다.


실행 방법; as:

awk [-Field-separator] 'commands' 입력 파일

여기의 명령은 실제 ​​awk 명령이고, [-F 필드 구분 기호]는 선택 사항이며 awk는 공백을 사용합니다. 기본적으로 분리되어 있으므로 필드 사이에 공백이 있는 텍스트를 탐색하려면 이 옵션을 지정할 필요가 없지만 콜론을 각 필드의 구분 기호로 사용하는 passwd와 같은 파일을 탐색하는 경우 -F를 사용해야 합니다. 옵션: awk -F : 'commands' input -file


awk가 실행될 때 검색 태그는 $1, $2...$n이며 이 메서드를 domain이라고 합니다. 태깅. 첫 번째와 세 번째 필드를 참조하려면 $1과 $3을 사용하세요. 쉼표는 필드를 구분하는 데 사용되며 $0은 모든 필드를 사용한다는 의미입니다. 예:

awk '{print $0}' temp.txt > sav.txt

는 모든 필드를 인쇄하고 결과를 리디렉션하는 것을 의미합니다. sav.txt로 이동

awk '{print $0}' temp.txt | tee sav.txt

위의 예와 유사합니다. 하지만 화면에는 다르게 표시됩니다

awk '{print $1,$4}' temp.txt

첫 번째와 도메인 4


awk 'BEGIN {print "NAME GRADEn----"} {print $1"t"$4}' temp.txt


은 메시지 헤더를 나타냅니다. 즉, 입력 내용의 첫 번째 줄 앞에 "NAME GRADen------------"를 추가하고 동시에 콘텐츠는 탭으로 구분됩니다

awk 'BEGIN {print "being"} {print $1} END {print "end"}' temp

메시지 헤더와 메시지 트레일러를 동시에 인쇄



조건 연산자:


<, <=, ==, !=, >=, ~ 정규식과 일치, !~ 정규식과 일치하지 않음

일치: awk '{if ($4~/ASIMA/) print $0}' temp는 네 번째 필드에 ASIMA가 포함된 경우 전체

를 인쇄한다는 의미입니다. 정확한 일치: awk '$3==" 48" {print $0}' temp 세 번째 필드가 "48"인 레코드만 인쇄합니다.

일치하지 않음: awk '$0 !~ /ASIMA/' temp ASIMA 없이 전체 레코드 인쇄

의 레코드는 awk '$1 != "asima"' temp

과 동일하지 않습니다. 보다 작음: awk '{if ($1<$2 ) print $1 "더 작음"}' temp

대소문자 설정: awk '/[Gg]reen/' temp 전체 인쇄 Green 또는 green을 포함하는 레코드

모든 문자: awk '$1 ~/^...a/' temp 첫 번째 필드의 네 번째 문자가 a인 레코드를 인쇄합니다. 기호 '^'는 줄의 시작을 나타내며 '.'과 일치합니다.

또는 관계형 일치를 나타냅니다. awk '$0~/(abc)|(efg)/' temp |를 사용하면 명령문을

AND 및 관계로 묶어야 합니다. awk '{if ( $1=="a" && $2=="b" ) print $0}' temp

OR 또는 관계: awk ' {if ($1=="a" || $1=="b") print $0}' temp

awk 내장 변수:

 awk内置变量

예: awk 'END {print NR}' temp 마지막에 읽은 레코드 수를 인쇄합니다.

awk '{print NF, NR, $0} END {print FILENAME} ' temp

awk '{if (NR>0 && $4~/Brown/) print $0}' temp Brown을 포함하는 레코드가 하나 이상 있습니다

NF의 또 다른 사용법: echo $PWD | awk -F/ '{print $NF}' 현재 디렉터리 이름 표시


실행 모드: awk '조건부 유형 1{Action 1} 조건 유형 2{Action 2} ...' 파일 이름

# last | awk '{print $1 "t" $3}' <== 로그인 데이터를 봅니다. 로그인 이름과 IP 주소만 [탭]으로 구분하여 표시합니다. awk의 내장 변수 변수 이름은 의미를 나타냅니다.

NF 각 행의 전체 필드 수($0)

NR awk가 현재 처리 중인 데이터의 "행 수"

FS는 구분 기호를 지정하며 기본값은 스페이스 키입니다



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿