awk命令常用執行個體

來源:互聯網
上載者:User

本文編輯整理自:http://apps.hi.baidu.com/share/detail/65330911、簡單awk '/101/' file 顯示檔案file中包含101的匹配行。awk '/101/,/105/' file 顯示檔案file中包含101或105的行。awk '$1 == 5' file顯示檔案file中第1個欄位為5的行。awk '$1 == "CT"'
file 顯示檔案file中第1個欄位為CT的行awk '$1 * $2 >100 ' file顯示檔案file中第1個欄位和第二個欄位的乘積大於100的行awk '$2 >5 && $2<=15' file顯示檔案file中第二個欄位大於5但小於等於15的行2、欄位域awk '{print NR,NF,$1,$NF}'
file 顯示檔案file的目前記錄號、域數和每一行的第一個和最後一個域。awk '/101/ {print $1,$2 + 10}' file 把檔案file的中包含101的匹配行的第一個欄位進行顯示,並把第二個欄位域加10也顯示,它們之間用逗號進行分割。awk '/101/ {print $1$2}'
file把檔案file的中包含101的匹配行的第一個欄位進行顯示,並把第二個欄位域加10也顯示,但它們之間沒有任何分割符。3、管道輸入df | awk '$4>1000000 ' 通過管道符獲得輸入,顯示第4個欄位域大於1000000的行。4、欄位域分割符awk -F "|" '{print $1}' file 按照新的分隔字元“|”進行操作。awk 'BEGIN { FS="[: \t|]" }{print $1,$2,$3}' file 通過設定分隔字元變數FS="[: \t|]"使得冒號、製表格及|都將作為分割符。Sep="|"awk -F $Sep '{print $1}' file 按照環境變數Sep的值做為分隔字元。awk -F '[ :\t|]'
'{print $1}' file 按照Regex的值做為分隔字元,這裡代表空格、:、TAB、|同時做為分隔字元。5、載入awk指令碼命令檔案awk -f awkfile file 載入檔案awkfile的awk指令碼命令來進行操作。cat awkfile/101/{print "\047 Hello! \047"} 遇到匹配行以後列印 ' Hello! '.\047代表單引號。6、行首匹配awk '$1 ~ /101/ {print
$1}' file 顯示檔案中第一個域匹配101的行(記錄)。7、輸出分割符awk 'BEGIN { OFS="%"}{print $1,$2}' file 通過設定輸出分隔字元(OFS="%")修改輸出格式。8、條件運算式awk 'BEGIN { max=100 ;print "max=" max} BEGIN 表示在處理任意行之前進行的操作。{max=($1 >max ?$1:max); print $1,"Now max is "max}' file 取得檔案第一個域的最大值。這裡居然是進行字元ASC碼的比較。運算式1?運算式2:運算式3 相當於:if (運算式1)運算式2else運算式3在awk的action中也可以使用條件運算式awk '{print ($1>4 ? "high "$1: "low "$1)}' file9、數學操作awk '$1 * $2 >100 {print $1}' file 顯示檔案file中第1個欄位和第二個欄位的乘積大於100的行10、改變欄位域awk '$1 == “Chi” {$3 = “China”; print}' file 找到匹配行後先將第3個域替換後再顯示該行(記錄)。awk '{$7 %= 3; print $7}' file 將第7域被3除,並將餘數賦給第7域再列印。11、欄位組合awk '/tom/ {wage=$2+$3; print wage}' file 找到匹配行後為變數wage賦值並列印該變數。12、對匹配的記錄計數awk '/tom/ {count++;}END {print "tom was found "count" times"}' file END表示在所有輸入行處理完後進行處理。13、函數調用awk 'gsub(/\$/,"");gsub(/,/,"");
cost+=$4;END {print "The total is $" cost>"filename"}' file gsub函數用空串替換$和逗號,再將結果輸出到filename中。14、條件陳述式awk '{gsub(/\$/,"");gsub(/,/,"");if ($4>1000&&$4<2000) c1+=$4;else if ($4>2000&&$4<3000) c2+=$4;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}'
file通過if和else if完成條件陳述式awk '{gsub(/\$/,"");gsub(/,/,"");if ($4>3000&&$4<4000) exit;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在某條件時跳過該行,對下一行執行操作。15、對多個檔案操作awk '{ print FILENAME,$0 }' file1
file2 file3>fileall 把file1、file2、file3的檔案內容全部寫到fileall中,並在每行以其該行源檔案名稱作為開始awk ' $1!=previous { close(previous); previous=$1 }{print substr($0,index($0," ") +1)>$1}' fileall 把合并後的檔案重新分拆為3個檔案。並與原檔案一致。17、getlineawk 'BEGIN {"date"|getline d;
print d}' 通過管道把date的執行結果送給getline,並賦給變數d,然後列印。awk 'BEGIN {system("echo \"Input your name:\""); getline d;print
"\nYour name is",d,"\b!\n"}'通過getline命令互動輸入name,並顯示出來。awk 'BEGIN {FS=":"; while(getline< "/etc/passwd" >0) { if($1~"050[0-9]_") print
$1}}'列印/etc/passwd檔案中使用者名稱包含050x_的使用者名稱。註:實驗失敗18、調用系統變數在awk中調用系統變數必須用單引號,如果是雙引號,則表示字串

Flag=abcdawk '{print '$Flag'}' 結果為abcd。註:實驗失敗awk '{print "$Flag"}' 結果為$Flag19、迴圈awk '{ i=1;while(i<=NF)
{print NF,$i;i++}}' file 通過while語句實現迴圈。awk '{ for(i=1;i<=NF;i++)
{print NF,$i}}' file 通過for語句實現迴圈。type file|awk -F "/" '{ for(i=1;i<=NF;i++){ if(i==NF) { printf "%s",$i }else { printf "%s/",$i } }}' 顯示file這個命令的全路徑。awk 'BEGIN {for(j=1;j<=12;j++){ flag=0;printf "\n%d月份\n",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}}}}'用for和if顯示日期

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.