간략한 소개, 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 중국어 홈페이지를 참고해주세요!