>php教程 >PHP开发 >Linux awk 명령 사용에 대한 자세한 설명

Linux awk 명령 사용에 대한 자세한 설명

高洛峰
高洛峰원래의
2016-12-15 11:14:071245검색

간략한 소개, awk는 grep 검색 및 sed 편집에 비해 강력한 텍스트 분석 도구입니다. 이는 데이터를 분석하고 보고서를 생성할 때 특히 강력합니다. 그의 인생 경험을 더 자세히 이해하고 싶다면 직접 검색해 보세요. 도구에 대한 지식과 관련하여 저자는 각 지식 포인트를 간략하게 설명하고 예를 들어 설명하려고 합니다.

간단히 말하면 awk는 파일을 한 줄씩 읽고 공백을 기본 구분 기호로 사용하여 각 줄을 분할한 다음 잘린 부분에 대해 다양한 분석 및 처리를 수행합니다.

사용법:
awk [옵션] 'scripts' file1,file2...
awk [옵션] 'pattern {action}' file1,file2...

옵션 -F -v 등과 같이 awk에서 지원하는 옵션입니다. 스크립트는 모드 패턴 및 작업을 포함하는 처리 스크립트입니다(모드와 작업 간의 관계는 일반적으로 다음과 같습니다. 모드는 유효한 필드를 결정하고 action이 처리를 담당합니다.)

1. print의 간단한 사용

다음과 같이 간단한 테스트 파일을 만듭니다.

[root@mos download]# cat 데모.txt

mos 블로그에 오신 것을 환영합니다.

테스트 파일입니다.


예: 전체 줄을 인쇄합니다: $0

[root@mos download]# awk '{print $0}' 데모 .txt

mos 블로그에 오신 것을 환영합니다.

테스트 파일입니다.

예: 각 항목의 마지막 필드를 인쇄하세요. 줄: $NF

[ root@mos 다운로드]# awk '{print $NF}' 데모.txt

blog.

file.

예: 두 번째 필드를 인쇄합니다. $2

[root@mos download]# awk '{print $2}' 데모.txt

to

is

예: 각 줄 필드의 두 번째부터 마지막까지 인쇄하고 OK

[root@mos download]# awk '{print $(NF-1),"OK"}' 데모.txt

mos OK

test OK

예: 줄 번호 인쇄

[root@mos download]# awk '{print NR,$0}' 데모.txt

1 mos 블로그에 오신 것을 환영합니다.

2 테스트 파일입니다.

예: 경로, 출력 등 현재 시스템 환경 변수의 특정 값을 인쇄합니다. 다음 두 개는 동일합니다

[root@mos download]# awk '{print ENVIRON["USER"];}' deco.txt

root

root

[root@mos 다운로드]# awk 'BEGIN{print ENVIRON["PATH"];}'

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/ local/sbin:/usr/local/bin:/sbin :/bin:/usr/sbin:/usr/bin:/root/bin

PS: 다음 파일은 성공적인 인쇄 실행에만 사용됩니다. BEGIN은 실행 전 출력할 수 있는 데이터입니다. 제목 및 테스트 출력에 사용되는 경우가 많으며 해당 내용은 나중에 언급할 파일 수정 작업과 관련된 변수를 얻을 수 없습니다. awk의 기본 구분 기호는 공백이며 일부 텍스트 단어는 다음과 같이 다른 문자를 구분 기호로 사용합니다. 두 예는 동일합니다

[root@mos download]# awk -F: {'print $1,$NF '} /etc/passwd|tail -1

mos1 /bin/bash

[root@mos 다운로드]# awk -v FS=: '{print $1,$NF}' / etc/passwd|head -1

root /bin/bash

예: 출력 구분 기호를 수정하고 특수 문자는 다음과 같이 이스케이프해야 합니다.

[root@ mos 다운로드]# awk -v OFS=. '{print $1,$NF}' 데모.txt

Welcome.blog.

This.file.

[root @mos 다운로드]# awk -v OFS="~"'{print $1,$NF}' 데모 .txt

Welcome~blog.

이~파일.

[root@mos 다운로드]# awk -v OFS=" '{print $1,$NF}' 데모.txt

Welcome"blog.

이"파일.

[root@mos 다운로드]# awk -v OFS=9 '{print $1,$NF} ' 데모.txt

Welcome9blog.

This9file.

[ root@mos 다운로드]# awk -v OFS=XXXX '{print $1,$NF}' 데모.txt

WelcomeXXXXblog.

ThisXXXXfile.

PS: 쉼표인 경우 인쇄 출력 필드 사이에 기록되지 않은 경우 출력 구분 기호는 유효하지 않으며 출력 결과는 Together에 직접 연결됩니다

awk에는 앞에 나열된 것과 같은 많은 기본 변수가 있습니다: $1~$n, $0 , FS, OFS 등 아래 그림은 awk 내장 변수 테이블을 보여줍니다:

속성 설명

$0 현재 레코드(단일 변수)

$1~$n n번째 필드 현재 레코드, 필드 간 FS

FS로 구분됨 기본 입력 필드 구분 기호는 공백입니다.

NF 현재 레코드의 필드 수는 열 수입니다.

NR 읽은 레코드 수, 1부터 시작하는 줄 번호입니다.

RS 입력 레코드 구분 기호는 기본적으로 개행 문자입니다.

OFS 기본 출력 필드 구분 기호도 공백

ORS 출력 레코드 구분 기호, 기본값은 개행 문자입니다.

ARGC 명령줄 ​​매개변수 수

ARGV 명령줄 매개변수 배열

FILENAME 이름 현재 입력 파일

IGNORECASE true인 경우 대소문자 무시 일치를 수행합니다.

현재 처리된 파일의 ARGIND ARGV 식별자

CONVFMT 숫자 변환 형식 %.6g

ENVIRON UNIX 환경 변수

ERRNO UNIX 시스템 오류 메시지

FIELDWIDTHS 공백으로 구분된 입력 필드 너비 문자열

FNR 현재 레코드 수

OFMT 숫자 %.6g의 출력 형식

RSTART 일치 함수와 일치하는 문자열의 시작

RLENGTH 일치 함수와 일치하는 문자열의 길이

SUBSEP

면책조항: 저자가 일반적으로 사용하지 않는 변수가 많기 때문에 여기에 모두 나열하지 않았습니다.



리눅스 awk 명령어 사용법에 대한 더 자세한 글은 PHP 중국어 홈페이지를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.