AWK 설명 - 문법 형식.
awk
: _
awk '/^UUID/{print $1}' /etc/fstab # UUID , {} 。print $1
awk '!/^UUID/{print $1}' /etc/fstab # UUID , {} 。print $1
: _ , 。
awp -F: '$3>=1000{print $1,$3}' /etc/passwd
awp -F: '!$3>=1000{print $1,$3}' /etc/passwd
awk -F: '(NR>=2&&NR<=10){print $1}'
: _
awk -F:'$NF="/bin/bash"{print $1,$NF}' /bin/passwd
awk -F:'$NF~/bash$/{print $1,$NF}' /bin/passwd
awk -F: '! ($NF=="/bin/bash")' /etc/passwd
: _ ,
awk -F:'10,20{print $1}' #----
awk -F:'/^root/,/^myuser/{print $1}'
: _BEGIN/END
awk 'BEGIN{print " username ID
------------"}{printf "%10s:%-s" $1,$3}END{print "=========
"}'
# BEGIN:
# END: , ,
: _0,
awk -v aa="" 'aa' /etc/passwd # aa ,( )。 , 。
awk -v aa=" " 'aa' /etc/passwd # aa ‘ ’
awk -v aa="0" 'aa' /etc/passwd # aa 0, 0, 。
awk -v aa="1" 'aa' /etc/passwd # aa 1 , 1, 。
awk -v aa=0 'aa++' /etc/passwd #aa 0, a++, a 。 。
echo "123"| awk -v a=1 'a=0{print $1}' #a 1. a=0, a 。 a , 0, 。
, {print $0}
awk '!0' /etc/passwd
print :
“”
$
, ( )
# , print ,
: >>echo "hello" |awk '{print}'
hello
# , ,
:
echo "hello word" |awk '{print $1"\t"$2}'
hello word
echo "hello word" |awk -F' ' '{print $1"---"$2}'
hello---word
echo "hello word" |awk -F' ' '{nu=10;print $1"---"$2"---"nu}'
hello---word---10
# , , , ,
:
echo "hello word" |awk -F' ' '{print $1$2}'
helloword
echo "hello:word:haha:asd" |awk -v FS=':' -v OFS='---' '{print $1$2}'
helloword
echo "hello:word:haha:asd" |awk -v FS=':' -v OFS='---' '{print $1,$2}'
hello---word
echo "hello:word:haha:asd" |awk -v FS=':' -v OFS='---' '{print $1,$2,$1$2}'
hello---word---helloword
printf
:
%c ascii
echo "asd"| awk '{printf "%c
",$1}'
%d i
echo "123"| awk '{printf "%-d
",$1}'
%e %E
%f
%s
echo "123"| awk '{printf "%s
",$1}'
123
echo "123"| awk '{printf "%s
","asd"}'
asd
%% %
%g %G
%u
:
#
#。#; #
- : , 。
+ :
조건 식:
: ? :
awk ‘{$3>=1000?usertype="......":usertype="::::::";printf "%15s:%-s
",$1,usertype}’
제어 문:
if:
:
if( ){ }
if( ){ } else { }
:
awk -F: '{if($3>1000) print $1,$3}' /etc/passwd #
awk -F: '{if($3>1000){printf " :%s",$1} else {printf " :%s",$1}}' # , 。
df -h |awk -F% '/\/dev\/sd/{print $1}'|awk '{if($NF>=16)print $1}'
df -h |awk -F% '/\/dev\/sd/{print $1}'|awk '$NF>=16{print $1}'
순환 구문:
while:
while ( ) { }
, 。
awk '/^[[:space:]]*linux/{i=1;while(ilength($i);i++}}' /etc/grub2.cfg
awk '/^[[:space:]]*linux/{i=1;while(iif(length($i)>7){print $i,length($i)};i++}}' /etc/grub2.cfg
awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {if(length($i)>=10){print $i,length($i)}; i++}}' /etc/grub2.cfg
do:
do{ } while( )
do 。 while 。 do 。
awk 'BEGIN{total=0;i=0;do{total+=i;i++;}while(i<=100);print total}'
awk 'BEGIN{total=0;i=0;while(i<=100){total+=i;i++};print total}'
for:
for (i=1;i<10;i++){ }
awk /[[:space:]]*linux/{for(i=1;i<=NF;i++){print $i,length($i)}} /etc/grub2.cfg
for :
:for (i in ) i ,
switch
break
,break # : #
contiune
, continue # : # 。
next : , 。gawk , ,
awk -F: '{if($3%2!=0) next;print $0 }' /etc/passwd
delete
exit
함수:
lrngth
, 。
: echo "asdd"|awk '{print length($1)}' # 。
rand,srand
rand, srand
: awk 'BEGIN{srand();for(i=1;i<=10;i++){print int(rand()*100)}}'
sub
sub(r,s,[t])
t( , , ), t , r , r s , 1
: echo "2008:08:08:08 08:08:08:08" |awk 'sub(/:/,"-",$0)'
gsub
gsub (r,s,[t])
t( , , ), t , r , r s , t 。
: echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw"|awk '{gsub(/[^0-9]/,"",$0);print $0}'
echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw"|awk 'gsub(/[^0-9]/,"",$0)'
split
split(a,array,[r])
r , a, , 1 , 1, 2.
netstat -tan |awk '/^tcp/{split($4,ip,":");a[ip[1]]++}END{for(i in a){print i,a[ip[1]]}}'
int
int( , )
。
system
: system(" ")
。 bash , awk , , awk , awk 。 bash awk 。 , 。
:awk 'BEGIN{system("hostname")}'
awk 'system("hostname"){i=0}'
:
function ( 1 , 2 。。。){
1
2
return
}
, awk 。
#cat fun.awk
function max(v1,v2) {
v1>v2?var=v1:var=v2
return var
}
BEGIN{a=3;b=2;print max(a,b)}
#awk –f fun.awk
, shebang, 。
awk ,
#cat f1.awk
{if($3>=1000)print $1,$3}
#awk -F: -f f1.awk /etc/passwd
#cat f2.awk
#!/bin/awk –f
#this is a awk script
{if($3>=1000)print $1,$3}
#chmod +x f2.awk
#f2.awk –F: /etc/passwd
awk :
:
awkfile var=value var2=value2... Inputfile
: BEGIN 。 ,
。 -v , awk BEGIN
。 -v
#cat test.awk
#!/bin/awk –f
{if($3 >=min && $3<=max)print $1,$3}
#chmod +x test.awk
#test.awk -F: min=100 max=200 /etc/passwd
데이터 참조:
, , , ,
$1 :
$2 :
, ,
,awk, , , 。
변수:
。
-v FS=" " -v ,
FS: ,
OFS: , 。
RS: , ,
ORS: ,
NF :
NR : , ,
FNR : 。
FILENAME :
ARGC :
ARGV : ,ARGV , ,
-v var=value
;
조작 부호
:
:
x+y x-y x*y x/y x^y x%y
:
-x : x
+x : x
:
:
+ += -= *= /= ^= %=
++ --
> >= < <= != ==
패턴 일치:
~ :
!~:
:
&& || !
:
( , )
배열:
awk , Python 。
,
, none, none 0 。
array[\$1]=aa
array[\$1]++
awk '!arr[\$0]++' /etc/fstab
, , none 1, ! , , 1, ! , , .
awk '{arr[$0]++;print $0,arr[$0]}'
.
netstat -tan | awk '/tcp\>/{stat{$NF}++}END{for(i in stat){print i,stat[i]}}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
파일 내용 및 파일 경로의 단수 및 복수 대체 텍스트를 사용하여 원본 파일을 대상에 붙여넣기기본 코드로 많은 수의 파일과 폴더를 복사하고 파일 내부의 여러 줄과 파일 및 폴더의 이름을 바꿔야 하는 경우가 많으며 시간이 많이 걸립니다😢. 이 문제를 해결하기 위해 나를 위해 할 수 있는 유틸리티를 작성했습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.