awk實用20實例

1. 功能是打印所有輸入行
awk '{print $0} ' f ilename
2. 打印輸入文件第八行
awk 'NR==8{print $0} ' f ilename
3. 用awk打印文件所有行的第一個字段
awk -F:'{print $1} ' f ilename
4. 打印輸入行總數
awk 'BEGIN{num=0;} {num++;}END{print num} ' f ilename
awk 'END{print NR}' f ilename
5. 打印每行字段數
awk -F: '{print NF,$0} ' f ilename
6. 打印最後一行的最後一個字段的值
Awk -F: 'END{print $NF} ' filename
7. 打印字段數大於等於4個的行
Awk -F: ‘NF>=4{print $0} ’ f ilename
8. 打印文件所有字段的總數
Awk -F: 'BEGIN{count=0}{count=count+NF:}{print count} ' f ilename
9. 打印UID在 30-40範圍內的用戶名
Awk -F: '$>=30&&S3<=40{print $1}' f ilename
10.倒敘排列文件的所有字段
awk -f : '{for( i=NF;i>0:i--) }{ if ( i!=1} {printf "%s: " ,$i};}else{printf ("%s\n" ,$i) ; }
#!/bin/awk -f
BEGIN{
F=": "
}
{
for( i=NF;i>0;i--)
{
if( i!=1)

printf ("%s: " ,$i)

Else
{
printf ("%s\n",$i)
}
}
}
11.打印5 到26 行
Awk -F: 'NR>=5&&NR<=26{print} ' f ilename12.在文件頂部加上標題“Document“
Awk 'BENGIN{print“Document}{print} 'f ilename
13.隔行刪除
Awk '{ if (NR%2==1) {print } }' f ilename
14.打印字段數大於5的行的總數
Awk -F: 'BEGIN{num=0; } { if(NF>=5) {num++;}} END {print num;}' f ilename
15.編寫一個 awk腳本,統計/dev中各類型文件數量
#!/bin/awk -f
BEGIN{
ff=0
dd=0
bb=0
cc=0
pp=0
ss=0
ll=0
}
{
if($0 ~/^-/)

ff++

if($0 ~/^p/)

pp++

if($0 ~/^b/)

bb++

if($0 ~/^/)

cc++

if($0 ~/^d/)

dd++

if($0 ~/^l/)

ll++

if($0 ~/^s/)
{s++

}
END{
Print "f ile: ", f f
Print "directory: " ,dd
print" character: ",cc
print" block: " ,bb
print" link: " ,ll
print" sockt : ",ss
print" pipe: " ,pp
}
16.編寫一個 awk腳本,讀取IP來自一個文件,並且測試該IP地址
#!/bin/awk -f
{
if(system("ping-c 1 " $0">/dev/null)==0)
{
Print $0 YES
}
else
{
Print $0 NO
}
}
17.編寫一個 awk腳本,讀取文件添加用戶
#!/bin/awk -f
{
If (system("useradd" $0 2>/dev/null) ==0)
{
Print "user: " $0"add"
}
else
{
Print "user"$0"error"
}
}
18.編寫一個 awk腳本,功能過濾出合法IP地址
#!/bin/awk -f
BEGIN{
FS=" : "
}
{
if( 1>0&&$1<255&&$2>=0&&$2<=255$3>=0&&$3<=255$4>=0&&$4<=255{
Print $0
}
}
19.編寫一個 awk腳本,功能是每行抽取第一個單詞
#!/bin/awk -f
BEGIN{
FS=" [^a-Z]+"
}
{ f irst=0
f lag=0
for( i=1;i<=NF;i++)
{
If ($I !=NULL}

if(f lag==0)
{
f irst=I
f lag=1
}

}
Print $f irst
}
20.編寫一個 awk腳本,功能是打印每行的第一個和最後一個單詞
#!/bin/awk -f
BEGIN{
FS=" [^a-Z]+"
}
{ f irst=0
f lag=0
last=0
for( i=1;i<=NF;i++)
{
If ($I !=NULL}

last=i
if(f lag==0)
{
f irst=I
f lag=1
}}
}
Print $f irst " " $last

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章