AWK正則表達式
AWK有非常強大和高效的處理正則表達式。一些複雜的任務,可以使用簡單的正則表達式解決。任何命令行專家都知道正則表達式的威力。
本教學介紹使用合適的例子標準的正則表達式。
Dot(點)
它匹配的行字符結束,除非任何單個字符。例如下麵簡單的例子匹配 fin, fun, fan等。
[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'
在執行上麵的代碼後,得到以下結果:
fun fin fan
行的開始
它匹配行的開始。比如下麵的例子打印所有使用模式行的開始。
[jerry]$ echo -e "This\nThat\nThere\nTheir\nthese" | awk '/^The/'
在執行上麵的代碼後,得到以下結果:
There Their
行結尾
行的末尾匹配。比如下麵的例子打印帶有字母n結束的行。
[jerry]$ echo -e "knife\nknow\nfun\nfin\nfan\nnine" | awk '/n$/'
在執行上麵的代碼後,得到以下結果:
fun fin fan
匹配字符集
它被用來匹配隻有一個幾個字符。比如下麵的例子匹配模式Call 和Tall 但不是Ball。
[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'
在執行上麵的代碼後,得到以下結果:
Call Tall
排他設置
在排他性設置插入否定設定在方括號字符。例如示例下麵的隻打印Ball。
[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'
在執行上麵的代碼後,得到以下結果:
Ball
變更
豎線允許正則表達式來進行邏輯或運算。比如下麵的例子打印Ball 和 Call。
[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'
在執行上麵的代碼後,得到以下結果:
Call Ball
零次或一次
它匹配零次或一次出現前麵的字符。比如下麵的例子匹配Colour以及Color。我們通過使用由u作為一個可選的字符?
[jerry]$ echo -e "Colour\nColor" | awk '/Colou?r/'
在執行上麵的代碼後,得到以下結果:
Colour Color
零個或多個出現
它匹配零個或多個出現前麵的字符。例如下麵的例子匹配ca, cat, catt等等。
[jerry]$ echo -e "ca\ncat\ncatt" | awk '/cat*/'
在執行上麵的代碼後,得到以下結果:
ca cat catt
一個或多個出現
它匹配前麵一個或多個出現的字符。比如下麵的例子匹配2的一個或多個出現。
[jerry]$ echo -e "111\n22\n123\n234\n456\n222" | awk '/2+/'
在執行上麵的代碼後,得到以下結果:
22 123 234 222
分組
括號()被用於分組和字符|被用於替代品。例如下麵的正則表達式匹配任何含有Apple Juice 或 Apple Cake.
[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk '/Apple (Juice|Cake)/'
在執行上麵的代碼後,得到以下結果:
Apple Juice Apple Cake