說明:藍色=命令名稱ide
淺綠=命令參數spa
淺藍=選項blog
紫色=目錄get
系統環境:CentOS 5.8 x86_64it
awk版本: GNU Awk 3.1.5class
awk腳本:seq 1 12|awk 'i++,/3/'awk
awk腳本:seq 1 12|awk '!i++,/3/'im
解析:腳本
多行匹配的原則是 真到真 即逗號前的 條件爲真時開始下行匹配直到逗號後面的條件爲真時退出本組匹配繼續尋找下一組,若是後面的一直爲假,則匹配到末尾。img
第一條腳本,第一行i=0(awk的默認參數值爲0),i++先判讀i值在作自加運算,因此第一行假,繼續往下行匹配,第二行i值爲1,爲真(awk中非0爲真),打印第二行。第三行i的值爲2,爲真,同時逗號後條件爲真,打印,並結束本組匹配,繼續下一組。第四行,i的值爲3,爲真,打印。。。。。。直到結尾也木有能匹配到/3/所有打印。
第二條腳本,第一行i=0(awk的默認參數值爲0),i++先判讀i值在作自加運算,取反爲真,打印本行並開始本組匹配,直到匹配到3,逗號後面的條件爲真結束本組。覺得逗號前面的非0值取反一直爲假不能在匹配到新的,退出。
例子:seq 1 12|awk -v a=4 '!a--,/1/'