淺談Linux三劍客awk命令的命令操作符

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個字符。

淺談Linux三劍客awk命令的命令操作符

案例2:

% || ==使用案例

seq 100 | awk '$1 % 7 == 0 || $1 ~ /^99/{print $1}'

輸出結果的要求:

整除7或者以99開頭

淺談Linux三劍客awk命令的命令操作符

案例3:

++使用

awk 'BEGIN{num=0}{num++}END{print num}' /etc/passwd

簡單解釋:

BEGIN{num=0}:定義一個變量num

{num++}:這裡沒有模式,只有動作。

即每匹配到文件/etc/passwd的一行就執行num++

END{print num}:文件遍歷結束,打印num的值,即文件的行數。

淺談Linux三劍客awk命令的命令操作符

這裡我們使用wc -l驗證也是沒問題的。

cat /etc/passwd | wc -l

上面3個案例簡單的使用了awk的命令操作符。

雖然只是用到了幾個簡單的,但是其他同理,大家可以執行操作。

下一篇:

Linux三劍客awk命令篇二之內部變量

歡迎大家給予寶貴的意見或者建議。

歡迎大家補充或者共享一些其他的方法。

感謝支持。


分享到:


相關文章: