Linux三劍客awk命令篇二:命令操作符
關於awk的原理等基本知識請參考上篇:
補充
1、語法格式:
(1) Awk完整語法
awk 'BEGIN{commands} pattern{commands}END{commands} ' file
BEGIN{commands}:處理數據前執行的命令。
END{commands}:處理完數據後執行的命令。
這兩個命令可以省略。見(2)
(2) Awk基本語法
awk -F '分割符' '/模式/{動作} ' file
這裡的'/模式/{動作} '類似於sed的命令格式。
模式:
(1) 正則表達式(注意格式:/正則表達式/)
(2) 條件表達式(例如:>
總結:
這裡的模式通俗來講是用來找誰,而動作表示是幹啥。
2、 awk的命令操作符
(1) 正則表達式與bash一致
(2) + - * / % ++ --
(3) && || !
(4) > < >= <= != == ~ !~
~:表示匹配後面的模式,用於字段,見案例1。
其餘的都比較常見就不舉例了。
3、案例
案例1:
~使用案例
awk -F : '$3 ~ /\<...>/{print $1,$3}' /etc/passwd
解釋:
模式:\<.../>
\< \>表示定界符,只匹配3個字符。
$3 ~:表示$3這個字段必須符合後面模式(\<...>)的要求。
見如下輸出結果,$3都是3個字符。
案例2:
% || ==使用案例
seq 100 | awk '$1 % 7 == 0 || $1 ~ /^99/{print $1}'
輸出結果的要求:
整除7或者以99開頭
案例3:
++使用
awk 'BEGIN{num=0}{num++}END{print num}' /etc/passwd
簡單解釋:
BEGIN{num=0}:定義一個變量num
{num++}:這裡沒有模式,只有動作。
即每匹配到文件/etc/passwd的一行就執行num++
END{print num}:文件遍歷結束,打印num的值,即文件的行數。
這裡我們使用wc -l驗證也是沒問題的。
cat /etc/passwd | wc -l
上面3個案例簡單的使用了awk的命令操作符。
雖然只是用到了幾個簡單的,但是其他同理,大家可以執行操作。
下一篇:
Linux三劍客awk命令篇二之內部變量
歡迎大家給予寶貴的意見或者建議。
歡迎大家補充或者共享一些其他的方法。
感謝支持。
閱讀更多 程序員日常筆記 的文章