awk兼具sed的全部功能,並且還支持分段html
打印文檔中的某段,-F做用是指定分隔符正則表達式
打印全部的段awk -F ':' '{print $0}' test.txtbash
打印文件的所有內容awk '{print $0}' test.txt,不須要加F,相似於cat查看文件spa
awk若是不指定分隔符,則默認空格或空白爲分隔符htm
打印多段內容awk -F ':' '{print $1,$2,$4}' test.txt排序
打印內容能夠指定#來分割,須要用到雙引號文檔
awk '/oo/' test.txt ,匹配包含oo的行字符串
awk -F ':' '$1 ~ /oo/' test.txt ,打印第一段中包含oo的行,~表示匹配get
awk -F ':' '$1 ~ /o+/' test.txt ,匹配第一段中包含o的行,支持正則表達式;這裏須要知道,出現特殊符號時,awk不用加脫義字符,grep和sed則必需要加脫義字符數學
awk支持多個表達式一塊兒寫
awk -F ':' '$3==0' test.txt ,匹配第3段等於0的;awk -F ':' '$3==0 {print $1}' test.txt //匹配第3段等於0的,並打印第1段;awk -F ':' '$3>=1000' test.txt //匹配第3段大於等於1000的,並打印全部段
awk -F ':' '$3>="1000"' test.txt,「1000」是以ASC碼值進行排序的,被認爲是字符串
awk -F ':' '$7!="/sbin/nologin" {print $0}' test.txt ,匹配出第7段不是/sbin/nologin的全部段,!=表示不匹配
awk -F ':' '$3<$4' test.txt ,匹配比較第3段小於第4段的行;awk -F ':' '$3==$4' test.txt,匹配出第3段和第4段相等的行,==就是等於,精確匹配
awk -F ':' '$3>"5" && $3<"7"' test.txt ,匹配第3段大於5的,和小於7的行,&&表示而且的意思
awk -F ':' '$3>1000 || $7=="/sbin/nologin"' test.txt ,匹配第3段大於1000的,或者第7段等於/sbin/nologin的所在的行,|| 表示 或者 的意思
awk -F ':' '$3>1000 || $7 ~ /bash/' test.txt,匹配第3段大於1000的,或者第7段包含/bash/的
經常使用的變量有OFS、NF和NR,OFS與-F選項有相似的功能,用來定義分隔符,可是在輸出時定義
awk -F ':' '{OFS="#"} {if ($3>1000) {print $1,$3,$7}}' test.txt //匹配第3段大於1000,第7段匹配/bash/的,而後打印第1,第3,第7段內容, 並用#分割
NF表示用分隔符分割後一共有多少行;NR表示行號
awk -F ':' 'NR<=10' test.txt ,打印前10行;awk -F ':' 'NR<=10 && $1 ~ /root|sync' test.txt,匹配前10行中,第1段包含root或者sync的
awk -F ':' 'NF==6 && $1 ~ /root|sync/' test.txt,匹配文件中是6段的,並在第1段包含root或者sync的
awk -F ':' '{print $NR":"$NF}' test.txt
head -n3 test.txt |awk -F ':' '$1="root"' ,在前3行中,給第1段賦值爲root
awk -F ':' '{(tot=tot+$3)}; END {print tot}' test.txt,tot值求和,tot默認0開始,每次和新的第三段值相加,最終第三段值加完,輸出tot值