正則表達式
- demo1:在某個文件中尋找命令sed
- demo2:尋找8位電話號碼
正則表達式:用來描述或者匹配某一系列符合某個句法隊則的字符串或者單個字符串。
最初正則表達式,出現在自動控制理論和形式化語言理論中。
Linux 中 find grep sed ls命令都支持正則表達式,vim, Emacs編輯器,shell編程都支持正則表達。
demo1:在某個文件中尋找命令sed
# grep <字符串> <文件名> > <輸出文件名>
grep "sed" ./learn.sh > ./sed_command.txt # 所有包含“sed”的行
grep "\bsed\b" ./learn.sh > ./sed_command.txt # 以"sed"作為單個單詞的行
注:> 可以將輸出到屏幕上的內容 輸出 到文件中(覆蓋緣由輸出),>> 追加輸出
\b被稱為元字符,其他元字符列表:
元字符 | 說明 |
---|---|
. | 匹配任意字符 |
\w | 匹配字母數字下劃線漢字 |
\s | 匹配任意空白符號 |
\d | 匹配數字 |
\b | 匹配單詞的開始\結尾 |
^ | 匹配行首 |
$ | 匹配行尾 |
反義字符 | 說明 |
---|---|
\W | 匹配不是字母數字下劃線漢字 |
\S | 匹配任不是空白符號 |
\D | 匹配不是數字 |
\B | 匹配不是單詞的開始\結尾 |
[^x] | 匹配不是x的字符 |
[^xyz] | 匹配不是x且不是y且不是z的字符 |
重復字符 | 說明 |
---|---|
* | 重復0次或者更多次 |
+ | 重復1次或者更多次 |
? | 重復0次或者一次 |
{n} | 重復n次 |
{n,} | 重復n次或者更多次 |
{n,m} | 重復n次到m次 |
go*gle–ggle(0次),gogle(1次),google(2次)
demo2:尋找8位電話號碼
grep "\D\d\d\d\d\d\d\d\d\d" diary.txt
grep "\D\d{8}\D" diaty.txt # \d 重復8次
grep "\D\d{4}[-\s]\d{4}\D" # []表示或