> php教程 > PHP开发 > 일반적으로 사용되는 awk 명령

일반적으로 사용되는 awk 명령

高洛峰
풀어 주다: 2016-12-15 10:44:12
원래의
1424명이 탐색했습니다.

awk 사용법: awk ' 패턴 {action} '

변수 이름 의미
ARGC 명령줄 ​​인수 수
ARGV 명령줄 인수 배열
FILENAME 현재 입력 파일 이름
FNR 현재 파일의 레코드 번호
FS 필드 구분 기호를 입력하세요. 기본값은 공백입니다.
RS 레코드 구분 기호를 입력하세요.
NF 현재 레코드의 필드 개수
NR 레코드 개수입니다. 지금까지
OFS 출력 도메인 구분 기호
ORS 출력 레코드 구분 기호

1.awk '/101/' 파일은 파일 파일에 101을 포함하는 일치하는 줄을 표시합니다.
awk '/101/,/105/' 파일
awk '$1 == 5' 파일
awk '$1 == "CT"' 파일 큰따옴표가 필요합니다.
aw k ' $1 * $2 >100 ' 파일
awk '$2 >5 && $2<=15' 파일


2.awk '{print NR,NF,$1,$NF,} ' file 현재 레코드 번호, 필드 수, file file의 각 줄의 첫 번째와 마지막 필드를 표시합니다.
awk '/101/ {print $1,$2 + 10}' 파일은 파일에서 일치하는 줄의 첫 번째와 두 번째 필드에 10을 더한 값을 표시합니다.
awk '/101/ {print $1$2}' file
awk '/101/ {print $1 $2}' file은 file의 일치하는 줄의 첫 번째와 두 번째 필드를 표시하지만 중간이 없습니다. 표시 시간 구분 기호의 필드입니다.


3. df | awk '$4>1000000 ' 다음과 같이 파이프 문자를 통해 입력을 받습니다. 조건에 맞는 4번째 필드에 행을 표시합니다.


4. awk -F "|" '{print $1}' 파일은 새로운 구분자 "|"에 따라 작동합니다.
awk 'BEGIN { FS="[: t|]" }
{print $1,$2,$3}' file 입력 구분 기호(FS="[: t|]")를 설정하여 입력 구분 기호를 수정합니다. .

Sep="|"
awk -F $Sep '{print $1}' 파일은 Sep 환경 변수의 값을 구분 기호로 사용합니다.
awk -F '[ :t|]' '{print $1}' 파일은 정규 표현식의 값을 구분 기호로 사용하는데, 여기서는 공백, :, TAB 및 |를 동시에 구분 기호로 나타냅니다.
awk -F '[][]' '{print $1}' 파일은 정규 표현식의 값에 따라 구분 기호로 사용되며 여기서는 [, ]


5를 나타냅니다. awk -f awkfile 파일은 awkfile 파일의 내용을 통해 순차적으로 제어됩니다.
cat awkfile
/101/{print "


8. awk 'BEGIN { max=100 ;print "max=" max} BEGIN은 행을 처리하기 전에 수행되는 작업을 나타냅니다.
{max=($1 >max ?$1:max); print $1,"이제 max는 "max}' 파일입니다. 파일의 첫 번째 필드의 최대값을 가져옵니다.
(식 1? 식 2: 식 3은 다음과 같습니다.
if (식 1)
식 2
else
식 3
awk '{print ($1>4 ? "high "$1: "low "$1)}' 파일


9. awk '$1 * $2 >100 {print $1}' 파일은 파일의 첫 번째 항목을 표시합니다. 필드는 101과 일치합니다. 행(레코드).


10. awk '{$1 == 'Chi' {$3 = 'China'; print}' 파일 일치하는 행을 찾은 후 먼저 세 번째 도메인을 인쇄합니다. (기록) awk '{$7 %= 3; print $7}' 파일은 7번째 필드를 3으로 나누고 나머지를 7번째 필드에 할당하고 >
11을 인쇄합니다. =$2+$3; printf Wage}' 파일 일치하는 행을 찾은 후 Wage 변수에 값을 할당하고 변수를 인쇄합니다.


12. > END {print "tom은 "count"번 발견되었습니다"}' file END는 모든 입력 라인이 처리된 후 처리를 의미합니다.


13.awk 'gsub (/$/,"");gsub (/,/,""); cost+=$4;
    END {print "The total is $" cost>"filename"}' 파일 gsub 함수는 $를 빈 문자열로 바꾸고 결과를 FILENAME에 출력합니다. gsub(/,/,"");

if ($4>1000&&$4<2000) c1+=$4;

else if ($4>2000&&$4<3000)
else if ($4>3000&&$4<4000) c3+=$4;
else c4+=$4 }
END {printf "c1=[%d];c2=[%d];c3=[% d];c4=[%d]n",c1,c2,c3,c4}"' 파일
if 및 else if

awk '{gsub(/$/, " ");gsub(/,/,"");
if ($4>3000&&$4<4000) 종료
else c4+=$4 }
END {printf "c1=[% d ];c2=[%d];c3=[%d];c4=[%d]n",c1,c2,c3,c4}"' file
Exit를 통해 특정 조건에서 종료하지만 여전히 END 동작을 실행합니다.
awk '{gsub(/$/,"");gsub(/,/,"")
if ($4>3000) next
else c4+=$4 }; END {printf "c4=[%d]n",c4}"' file
특정 조건에서 줄을 건너뛰고 다음 줄에 작업을 수행하려면 next를 사용합니다.


14, awk '{print FILENAME,$0}' file1 file2 file3>fileall file1, file2, file3의 모든 파일 내용을 fileall에 씁니다. 형식은
입니다. 파일을 인쇄하고 파일 이름 앞에 붙습니다. =previous { close(previous); Previous=$1 }
{print substr($0,index($0," ") +1)>$1}' fileall 병합된 파일을 다시 분할합니다.


16. awk 'BEGIN {"date"|getline d; print d}' 파이프라인을 통해 날짜 실행 결과를 변수 d에 할당하고 인쇄합니다.


17. awk 'BEGIN {system("echo "이름을 입력하세요:\c"") getline d;print "n이름은",d,"b!n"}'
통과 getline 명령은 대화식으로 이름을 입력하고 표시합니다.
awk 'BEGIN {FS=":"; while(getline< "/etc/passwd" >0) { if($1~"050[0-9]_") 인쇄 $1}}'
/etc/passwd 파일에 050x_가 포함된 사용자 이름을 인쇄합니다.

18.awk '{ i=1;while(i awk '{ for(i=1;i type file|awk -F "/" '
{ for(i=1;i { if(i==NF-1) { printf "%s",$ i }
else { printf "%s/",$i } }}' 파일의 전체 경로를 표시합니다.
날짜를 표시하려면 for 및 if를 사용하세요.
awk 'BEGIN {
for(j=1;j<=12;j++)
{ flag=0
printf "n%dmonthn; ",j;
for(i=1;i<=31;i++)
{
if (j==2&&i>28) flag=1;
if ((j==4 ||j==6||j==9||j==11)&&i>30) flag=1;
if (flag==0) {printf "%02d%02d ",j,i}
       } 

}'


19. awk에서 시스템 변수를 호출할 때 작은따옴표를 사용해야 합니다. 큰따옴표인 경우 문자열
을 의미합니다. Flag=abcd
awk '{print '$Flag'}' 결과는 abcd입니다
awk '{print "$Flag"}' 결과는 $Flag입니다

위 내용은 chinaunix에서 전송되었습니다. , 다음은 내 요약입니다.

합계:

$awk 'BEGIN{total=0}{total+=$4}END{print total}' a.txt ----- a.txt 파일의 네 번째 필드를 합산합니다!

$ awk '/^(no|so)/' test -----모드 no로 시작하는 모든 줄을 인쇄합니다.

$ awk '/^[ns]/{print $1}' test------레코드가 n 또는 s로 시작하는 경우 이 레코드를 인쇄합니다.

$ awk '$1 ~/[0-9][0-9]$/(print $1}' test -----첫 번째 필드가 두 개의 숫자로 끝나면 이 레코드를 인쇄합니다.

$ awk '$1 == 100 || $2 < 50' 테스트----첫 번째 필드가 100이거나 두 번째 필드가 50보다 작은 경우 🎜>$ awk '$1 != 10' test------첫 번째 필드가 10이 아니면 이 줄을 인쇄합니다.

$ awk '/test/{print $1 + 10}' test- ----If 레코드에 정규식 테스트가 포함되어 있으면 첫 번째 필드에 10을 추가하고 인쇄합니다.

$ awk '{print ($1 > 5? "ok "$1: "error"$1) }' test- ----첫 번째 필드가 5보다 크면 물음표 뒤에 표현식 값을 인쇄하고, 그렇지 않으면 콜론 뒤에 표현식 값을 인쇄합니다.

$ awk '/^root/,/^mysql. ' test----정규식 mysql로 ​​시작하는 레코드 범위 내의 모든 레코드에 정규식 루트로 시작하는 레코드를 인쇄합니다. 정규식 루트로 시작하는 새 레코드가 발견되면 다음 레코드까지 계속 인쇄합니다. 정규식 mysql로 ​​시작하는 레코드 또는 파일의 끝까지



일반적인 awk 명령과 관련된 추가 기사를 보려면 다음을 참조하세요. PHP 넷에 주목하세요!

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