awk 使用正則表示式
阿新 • • 發佈:2018-12-27
awk
使用正則表示式
1. 正則表示式
2. awk命令
3. 在awk中使用正則表示式
3.1 實戰案例1
[[email protected] temp]# echo "Abaidu.comB" | awk '/^A.*?B/'{print}
Abaidu.comB
這裡解釋一下這個正則表示式。
^A.*?B
指的是:以A
字元開頭; .*
指的是任意字元可以出現任意次;?
表示之前的字串必須匹配一到多次;B
表示必須包含這個字元 B
。
3.2 實戰案例2
[[email protected] temp]# echo "sdfAbaidu.comB" | awk '/^s.*?B$/'{print}
sdfAbaidu.comB
這裡新添的知識點有:B$
是以字元B
結尾的字串。
3.3 實戰案例3
[[email protected] temp]# awk '/in?/' data1.txt
2 winxp 4000
4 linux 1000
[[email protected] temp]# cat data1.txt
1 mac 2000
2 winxp 4000
3 bsd 1000
4 linux 1000
這裡的in?
表示的是包含in
字串的行。
3.4 實戰案例4
[[email protected] temp]# awk '/m(a)*(ab)?c/' data1.txt
1 mac 2000
5 maaaabc 200
[[email protected] temp]# cat data1.txt
1 mac 2000
2 winxp 4000
3 bsd 1000
4 linux 1000
5 maaaabc 200
這裡的正則表示式含義是:(a)*
指的是可以匹配0或多次a
;(ab)?
指的是(ab)
必須匹配0或1次。
3.5 實戰案例5
[[email protected] temp]# awk '/a{1}/' data1.txt
1 mac 2000
5 maaaabc 200
a{1}
指的就是字元a
必須匹配1次。
如果說要是想在匹配成功之後,執行別的操作,如下:
[[email protected] temp]# awk '/a.c/''{print "ok"}' data1.txt
ok
這裡的操作就是,如果有匹配a.c
,那麼輸出ok
,否則什麼也不做。上述的命令可以簡化成如下的樣子:
[[email protected] temp]# awk '/a.c/{print "ok"}' data1.txt
ok
如果能夠匹配數字,則輸出ok。
[[email protected] temp]# awk '/[0-9]/{print "ok"}' data1.txt
ok
ok
ok
ok
ok
可以看到這裡匹配了很多的ok。 是因為每匹配成功一次,就會輸出一個ok