php教程 PHP开发 awk 명령에 대한 자세한 설명

awk 명령에 대한 자세한 설명

Dec 15, 2016 am 10:36 AM
awk 명령

awk 명령에 대한 자세한 설명

간단한 사용법:

awk: 파일의 각 줄에 대해 작업을 수행합니다.

awk -F: '{print $1,$4}' : ':'을 사용하여 이 줄을 분할하고 이 줄의 첫 번째와 네 번째 필드를 인쇄합니다.

상세 소개:

AWK 명령어 소개

awk 언어의 가장 기본적인 기능은 파일이나 문자열에 지정된 규칙을 기반으로 정보를 찾아 추출합니다. awk가 정보를 추출한 후에만 다른 텍스트 작업을 수행할 수 있습니다. 완전한 awk 스크립트는 일반적으로 텍스트 파일의 정보 형식을 지정하는 데 사용됩니다. 1. awk 호출:

첫 번째 명령줄 방법:

awk [-Field-separator] 'commands' input- file(s)

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

둘째, 모든 awk 명령을 파일에 삽입하고 awk 프로그램을 실행 가능하게 만든 다음 awk 명령 해석기를 스크립트의 첫 번째 줄로 사용하여 다음을 호출할 수 있습니다.

세 번째로 모든 awk 명령을 별도의 파일에 삽입한 후 다음과 같이 호출합니다.

awk -f awk-script-file input-file

-f 옵션은 awk-script-file 파일에 awk 스크립트를 지정하고, input-file은 awk를 사용하여 검색한 파일 이름입니다

2. awk 스크립트 :

awk 스크립트는 구분 기호(-F 옵션)에 따라 다양한 동작과 모드로 구성됩니다. .읽은 내용은 해당 필드에 차례대로 배치됩니다. 파일 끝까지 읽은 것을 기록합니다

2.1 모드 및 동작

모든 awk 문은 모드와 동작으로 구성됩니다. awk에는 스크립트에 많은 문이 있을 수 있습니다. 모드 부분은 작업 명령문이 실행되고 이벤트가 트리거되는 시기를 결정합니다. 액션은 데이터에 대한 작업입니다. 패턴 부분이 생략되면 액션은 항상 실행 상태로 유지됩니다.

패턴은 조건문이나 복합문 또는 정규 표현식일 수 있습니다. 두 개의 특수 필드 BEGIN 및 END가 포함되어 있으며 BEGIN 문을 사용하여 카운트 및 인쇄 헤드를 설정합니다. BEGIN 문은 텍스트 탐색 작업 전에 사용되며 입력 파일을 기반으로 텍스트 탐색 작업이 실행됩니다. awk가 텍스트 탐색 작업을 완료한 후 총 텍스트 수를 인쇄하려면 작업을 {}

로 묶어야 합니다. 실제 작업은 중괄호 {} 안에 지정됩니다. 이는 작업 인쇄에 일반적으로 사용되지만 if 및 루프 문 및 루프 종료 등과 같은 더 긴 코드도 있습니다. 수행할 작업을 지정하지 않으면 awk는 기본적으로 탐색된 모든 레코드를 인쇄합니다

2.2. 도메인 및 레코드:

awk가 실행되면 검색 태그는 $1, $2...$n입니다. 첫 번째와 세 번째 필드를 참조하려면 $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

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

2.3. 조건 연산자:

=, ~는 정규식과 일치합니다. ,!~ 정규 표현식

과 일치하지 않습니다. 일치: awk '{if ($4~/ASIMA/) print $0}' temp는 네 번째 필드에 ASIMA가 포함되어 있으면 전체를 인쇄함을 의미합니다. line

완전 일치: awk '$3=="48" {print $0}' temp 세 번째 필드가 "48"인 레코드만 인쇄

불일치: awk '$0 !~ /ASIMA/' temp ASIMA를 포함하지 않는 전체 레코드를 인쇄합니다.

같지 않음: awk '$1 != "asima"' 온도

미만: awk '{if ($1

케이스 설정: awk '/[Gg]reen/' temp Green 또는 green

을 포함하는 전체 레코드를 인쇄합니다. 모든 문자: awk '$1 ~/^...a/' temp 첫 번째 필드의 네 번째 문자를 인쇄합니다. '^' 기호는 줄의 시작을 나타내고 '.'은 모든 문자를 나타냅니다.

또는 관계형 일치: awk '$0~/(abc)|(efg)/' temp 사용 | 언제, 명령문을 괄호로 묶어야 하는지

AND 관계: awk '{if ( $1=="a" && $2=="b" ) print $0}' temp

OR: awk '{if ($1=="a" || $1=="b") print $0}' 임시

2.4 . 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}' 현재 디렉토리 이름 표시

2.5. awk 연산자:

awk에서 연산자를 사용하면 기본 표현식을 숫자 유형, 문자열 유형, 변수 유형, 필드로 나눌 수 있습니다. 및 배열 요소

는 입력 필드를 변수 이름으로 설정합니다.

awk '{name=$1;six=$3; =="man ") 인쇄 이름 "은 " six}' temp

도메인 값 비교 작업:

awk 'BEGIN {BASE= "27"} {if ($4

숫자 필드의 값 수정: (원래 입력 파일은 변경되지 않음)

awk '{if ($1=="asima") $6=$6-1;print $1, $6, $7}' temp

텍스트 수정 필드:

awk '{if ($1=="asima) ($1=="desc");print $1}' 임시

수정 기록만 표시:( 필요한 것만 표시합니다. 이전 명령과 다름, 참고 {})

awk '{if ($1=="asima) {$1== "desc";print$1}} ' temp

새 출력 필드 만들기:

awk '{$4=$3-$2; $4}' temp

통계 열 값:

awk '(tot+=$3);END {print tot}' temp는 다음을 표시합니다. 각 열의 내용

awk '{(tot+=$3)};END {print tot}' temp 최종 결과만 표시

파일 길이를 추가하세요:

ls -l|awk '/^[^d]/ {print $9"t"$5} {tot+=$5} END{print "totKB:" tot}'

파일 이름만 나열:

ls -l|awk '{print $9}' 일반적으로 파일 이름은 9번째입니다. domain

2.6. awk 내장 문자열 함수:

gsub(r, s) $0 전체에서 r을 s로 바꿉니다

awk 'gsub(/name/,"xingming") {print $0}' temp

gsub(r, s, t) r 교체 t 전체에 s 포함

index(s, t) s에서 문자열 t의 첫 번째 위치를 반환합니다.

awk 'BEGIN {print index("Sunny", "ny ")}' temp는 4를 반환합니다

length(s) s의 길이를 반환합니다

match( s, r) s에 일치하는 r 문자열이 포함되어 있는지 테스트합니다

awk '$1=="J.Lulu" {print match($1, "u")}' temp Return 4

split(s, a, fs) s를 fs의 시퀀스 a로 나눕니다

awk 'BEGIN {print Split("12#345# 6789",myarray,"# ")"'

3을 반환하고 while myarray[1]="12", myarray[2]="345", myarray[3]="6789"

sprint(fmt, exp ) fmt 형식의 exp 일치 문자열을 반환합니다.)

substr(s, p) 문자열 s에서 p로 시작하는 접미사 부분을 반환합니다.

substr(s, p , n) 문자열 s에서 p로 시작하고 길이가 n인 접미사 부분을 반환합니다.

2.7 printf 함수 사용:

문자 변환 : echo "65" |awk '{printf "%cn",$0}' 출력 A

awk 'BEGIN {printf "%fn",999}' 출력 999.000000

형식화된 출력: awk '{printf "%-15s %sn", $1, $3}' temp는 첫 번째 필드를 모두 왼쪽 정렬하여 표시합니다.

2.8. 기타 awk 사용법:

awk 명령 줄에 값 전달:

awk '{if ($5

who | awk '{if ($1==user) print $1 " are in " $2 ' user=$LOGNAME 환경 변수 사용

awk 스크립트 명령:

시작 부분에 !/bin/awk -f를 사용하세요. -포함된 스크립트는 실행되지 않습니다. 예:

!/bin/awk -f

# 모든 주석 줄은 해시로 시작해야 합니다. '#'

# 이름: Student_tot.awk

# 호출: Student_tot.awk grade.txt

#동아리 학생 포인트의 총합과 평균을 인쇄합니다

# 헤더를 먼저 인쇄합니다

BEGIN

{

print "학생 일자 회원번호 학년 연령 포인트 최대"

print "이름 가입 포인트 적립 가능" "

인쇄"================================== ============= =========="

}

# 획득한 점수를 더해봅시다

(tot+=$6);

# 처리가 완료되었습니다. 이제 총점과 평균점을 출력해 보겠습니다

END

{

인쇄 "동아리 학생 총점:" tot

"평균 동아리 학생 포인트:" tot/N

}

2.9.9. >

awk 루프 기본 구조

For(배열의 요소) 인쇄 array[요소]

awk 'BEGIN {record="123#456#789" ;split(record, myarray, "#")}

END { for (i in myarray) {print myarray[i] } }

3.0 awk의 맞춤문

1. 조건부 판단문(if)

if (표현식) #if ( 배열의 변수 )

문 1

else

문 2

형식에서 "문 1"은 여러 문이 될 수 있습니다. Unix의 awk 판단과 읽기를 용이하게 하려면 {}로 여러 문을 묶는 것이 좋습니다. Unix awk 분기 구조는 중첩을 허용하며 해당 형식은 다음과 같습니다.

if(expression)

{Statement 1}

else if(expression)

{ 명령문 2}

else

{문 3}

[chengmo@localhost nginx]# awk 'BEGIN{
test=100;
if(test>90)
{

"매우 좋음" 인쇄;

}
else if(test>60)
{
"좋음" 인쇄;
}
else
{
" 인쇄 no pass";
}
}'

very good


각 명령문은 ";" 기호로 끝날 수 있습니다.

2. 루프문(while, for, do)

1. while 문

형식:

while(표현식) 공식)

{문}

예:

[chengmo@localhost nginx]# awk 'BEGIN{

test=100;

total=0;

while(i{

total+=i;
i++;
}
print total;
}'
5050

2.for 루프

for 루프에는 두 가지 형식이 있습니다.

형식 1:

for(배열의 변수)

{statement}

예:

[chengmo@localhost nginx]# awk 'BEGIN{

for(k in ENVIRON)

{

print k"="ENVIRON[k];

}

}'

AWKPATH=.:/usr/share/awk
OLDPWD=/home/web97
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
SELINUX_LEVEL_REQUESTED=

SELINUX_ROLE_REQUESTED=

LANG=zh_CN.GB2312

. . . . . .

설명: ENVIRON은 awk 상수이자 하위 일반적인 배열입니다.

형식 2:

for(변수; 조건; 표현식)

{statement}

예:

[chengmo@ localhost nginx]# awk 'BEGIN{
total=0;
for(i=0;i{
total+=i;
}
전체 인쇄 ;
}'

5050

3.do 루프

형식:

do

{statement}while( 조건 )

예:

[chengmo@localhost nginx]# awk 'BEGIN{
total=0;
i=0;
do
{
total+=i;
i++;
}while(iprint total;
}'
5050

이상 구문에서 볼 수 있듯이 awk 흐름 제어 문입니다. C 언어와 동일합니다. 이러한 명령문을 사용하면 실제로 많은 쉘 프로그램을 awk로 전달할 수 있으며 성능이 매우 빠릅니다.

awk 명령에 대한 자세한 설명


awk 명령어 관련 더 자세한 글은 PHP 중국어 홈페이지를 참고해주세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)