AWK工具的用法
基本格式
awk '{commands}' filename
或者stdin | awk '{commands}'
以下,均簡寫為awk '{commands}'的形式
commands的用法
commands逐行作用于文本流
- $1當前行第一列數據,$NF最后列,$(NF-1)即倒數第二列
awk '{print $(NF-1)}'
# 補充說明:
$0 當前行所有列
NR 當前行號
NF 當前行字段數 - print默認結尾換行;printf不換行
awk '{printf $1}' - 多條語句以分號間隔
awk '{printf $1; print $(NF-1)}' - 多個參數以逗號間隔,打印后以空格間隔
awk '{print $1, $2, $3}' - 空格會被忽略不計
awk '{print $1 $2}'
打印結果這兩個參數會被[字符拼接] - 雙引號拼接字符
awk '{print $1 ":" $2}'
打印結果是這兩個參數用冒號連接
# 補充說明
外層的單引號也可以用雙引號,
此時內層拼接用單引號 - 通過for循環打印范圍列
awk '{for(i=9;i<NF;i++) printf $i"\t"; print ""}'
以分號制造了兩個語句
1. 循環語句僅作用于緊跟著的打印語句
2. 循環完成后執行print語句換行 # 補充說明
如果for循環內有多條語句,必須使用大括號括起來:
awk '{
for(i=9;i<NF;i++){printf $i; #此處分號不可以省略print "\t"}; #此處分號可以省略
print ""; #此處分號不可以省略
print ""
}' - 通過條件判斷執行打印
方法一: 條件操作語句(和for循環用法一致)
awk '{if($9>=100 && $10>=50)printf $9;print ""}'
使用多條語句:
awk '{if($9>=100 && $10>=50){printf $9;printf "\t"$10}else if($9<100 && $10 >=50){printf "$10"}else{print "it\'s ok"}
}'
方法二: 條件模式
awk自帶三個條件模式:前面講的所有均為中間的commands:
awk 'BEGIN {COMMANDS1} pattern {commands} END {COMMANDS2}'實例:awk '$9>=100||$10>=2{print $9"\t"$10}'
第九列值大于100且第十列值大于2時,打印這兩個值awk '!/CrowdApp/ && $9>=50 {print $9"\t"$10}'
包含CrowdApp字段,且第九個字段大于50時,打印xxxawk 'NR==5,NR==10{print $0}'
打印5-10行的所有值 - BEGIN和END
awk 'BEGIN{ i=0 } /CrowdApp/ {print $0;i++} END{print $i}'# 補充說明
BEGIN在執行awk所有命令前先執行一次;
patterns內的command每一行都會執行一次;
END只有在執行完所有語句后執行一次。 - awk參數傳遞
方法一:
awk -v var=$pwd '{print var}'
方法二:
awk '{print v1, v2}' v1=$VAR1, v2=$VAR2 - 指定字段分隔符
awk -F: '{print $NF}'
默認以空格分割各個字段;此時指定冒號分割
轉載于:https://www.cnblogs.com/jiukun/p/9325512.html
總結
- 上一篇: 脚手架多少钱一平方啊?
- 下一篇: 中间件笔记