eg:輸出文本中第一列和第三列
awk '{print $1,$3}' test.txt
$0 表示輸出所有內容
eg:修飾表頭和表尾
awk 'BEGIN {print "It is begin"} {print $1,$3} {print "It is end"} test.txt
eg:統計每行的其中兩列的和
awk '{print $1,$3,$1+$3}' test.txt
eg:篩選某一行含有beijing字符的列
awk '$3 ~ /beijing/ {print $1,$3}'
eg:過濾字符過長,可以將命令保存到文件awk.txt中,-f指定
awk -f awk.txt test.txt
eg:只展示奇數行
awk 'NR%2==0 {next} {print NR,$0}' test.txt
NR表示當前行號
next動作表示,一旦遇到偶數行,跳過
eg:合并所有行
awk '{T=T" "$0} END {print T}' test.txt
eg:awk調用shell
awk 'BEGIN { system("ls -al")}'
awk 里的substr函數用法舉例:
要截取要截取的內容1:
F115!16201!1174113017250745 10.86.96.41 211.140.16.1 200703180718
F125!16202!1174113327151715 10.86.96.42 211.140.16.2 200703180728
F235!16203!1174113737250745 10.86.96.43 211.140.16.3 200703180738
F245!16204!1174113847250745 10.86.96.44 211.140.16.4 200703180748
F355!16205!1174115827252725 10.86.96.45 211.140.16.5 200703180758
使用 awk 內置的取子串函數提取輸入文件中的手機號
$ awk -F '[ !]' '{print substr($3,6)}' test.txt
13017250745
13327151715
13737250745
13847250745
15827252725
解釋:
substr($4,20) ---> 表示是從第4個字段里的第20個字符開始,一直到設定的分隔符","結束.
substr($3,12,8) ---> 表示是從第3個字段里的第12個字符開始,截取8個字符結束.
awk制定某一列精確字符匹配
比如只匹配第二列數字為88的行
awk '$2~/^88$/ {print $0}'
如果要在腳本里面調用awk,且awk里面有需要傳入變量寫法如下
awk '$2~/^'$err_no'$/ {print $2}'
awk過濾的藝術
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。