關於正則表示式第四篇(r3筆記第53天)
阿新 • • 發佈:2022-05-04
正則表示式,林林總總說了幾篇,還是有不少的內容需要補充。 -->星號 字元出現0次或者多次
$ echo "ik"|sed -n '/e*/p' ik $ echo "ieek"|sed -n '/e*/p' ieek $ echo "This is a color TV"|sed -n '/colou*r/p' --colour中的u可以出現0次或者多次。出現0次的時候color就符合條件 This is a color TV $ echo "This is a colour TV"|sed -n '/colou*r/p' --colour中的u可以出現0次或者多次。出現1次的時候colour就符合條件 This is a colour TV
-->星號+點字元 星號和點字元的結合
$ echo "This is a nice hat"|sed -n '/a.*hat/p'
This is a nice hat
-->星號+字元組
$ cat c.txt
bt
bat
bet
btt
batt
baaeeat
bakeat
$ sed -n '/b[ae]*t/p' c.txt
bt
bat
bet
btt
batt
baaeeat
擴充套件表示式有以下幾種,在linux中對於grep,awk都是支援的。 問號 花括號 管道符號 聚合表示式 -->問號 字元出現0次或者1次
$ cat c.txt bt bat bet btt batt baaeeat bakeat $ sed -n '/b[ae]*t/p' c.txt bt bat bet btt batt Baaeeat $ awk '/b[ae]?t/{print $0}' c.txt --匹配0次或者1次的時候,Baaeeat 怎麼也匹配不到[ae]相關的組合。 bt bat bet btt batt
-->加號 字元出現1次或者多次,這個和問號有些類似。但是對於出現的頻率會有不同。問號是0次或者一次,星號是0次或者多次。
$ awk '/b[ae]+t/{print $0}' c.txt
bat
bet
batt
baaeeat
-->花括號 m 正則表示式準確出現m次 m,n 正則表示式至少出現m次,至多n次 預設awk不會識別正則表示式區間,需要指定--re-interval 選項
$ echo "bat"|awk '/b[ae]{1}t/{print $0}' echo "bat"|awk --re-interval '/b[ae]{1}t/{print $0}' bat $ cat c.txt bt bat bet btt batt baaeeat bakeat $ awk --re-interval '/b[ae]{1,2}t/{print $0}' c.txt bat bet batt $ cat d.txt the cat is asleep the dog is asleep the sheep is asleep $ awk '/cat|dog/{print $0}' d.txt the cat is asleep the dog is asleep
-->聚合表示式
$ echo "Sat"|awk '/Sat(urday)?$/{print $0}'
Sat
$ echo "Satx"|awk '/Sat(urday)?$/{print $0}'
$ echo "Saturday"|awk '/Sat(urday)?$/{print $0}'
Saturday
$ echo "Saturdayurday"|awk '/Sat(urday)?$/{print $0}'
$ echo "cat"|awk '/(c|b)a(b|t)/{print $0}'
cat
$ echo "tab"|awk '/(c|b)a(b|t)/{print $0}‘
$ echo "tac"|awk '/(c|b)a(b|t)/{print $0}'