Linux 正則表達式 grep


容易混淆的兩個注意事項:

1)linux正則表達式一般是以行為單位處理的。

2)正則表達式和我們常用的通配符特殊字符是有本質區別的,例如:ls *.txt 這里的*就是通配符(表示所有),不是正則表達式。

注意字符集問題:

確保字符集:export LC_ALL=C

---------------------------------------------

基礎正則表達式+擴展正則表達式含義解釋:

---------------------------------------------

.   代表且只能代表任意一個字符(不包括空行)
*   重復前面任意0個或多個字符
.*   匹配所有字符。(包括空行)
sed -ri 's#(.*)#\1#g' bqh.txt
把前面正則匹配的括號內的結果,在后面用\1取出來操作。
^   表示以什么開頭,^bqh 以bqh開頭
$   是以什么結尾
^$   表示空行。
\ 例\.   就只代表點本身,轉義符號,讓有着特殊身份移動的字符,脫掉馬甲,還原原型\$
^.*   以任意多個字符開頭。
.*$   以任意多個字符結尾。
(.*)   從第一字符匹配,到空格停止,
[abc]   匹配字符集合內的任意一個字符【a-zA-Z】
[^abc]   匹配不包括^后的任意字符的內容;中括號里的^為取反,注意和以...開頭區別。
a\{n,m\}   重復n到m次,前一個重復的字符。如果有用egrep/sed -r 可以去掉斜線。
\{n,\}   重復至少n次,前一個重復的字符。如果有用egrep/sed -r 可以去掉斜線。
\{n\}   重復n次,前一個重復的字符。如果有用egrep/sed -r 可以去掉斜線。
①^word   搜索以word開頭的;vi ^ 一行的開夠
②word$   搜索以word結尾的;vi $ 一行的開頭
③^$   表示空行。
擴展的正則表達式:ERP(egrep或grep -E)

+   重復一個或一個以上前面的字符
? 復0個或一個0前面的字符
|   用或的方式查找多個符合的字符串
()  找出“用戶組”字符串

實戰舉例:

^m 搜索以m開頭的

 

p$搜索以p結尾的

 

^$表示空號

 

去掉空行:grep –v “^$” bqh.log

查看去掉的后的空行內容:grep -vn “^$” bqh.log 

 

.   代表且只能代表任意一個字符(不包括空行)

查找帶0的字符:

.*   匹配所有字符。(包括空行)

查找以.結尾的字符:

錯誤方法:grep ".$" bqh.log

正確方法:

grep “\.$” bqh.log 

注意:\. 就只代表點本身,轉義符號,讓有着特殊身份移動的字符,脫掉馬甲,還原原型\$

*   例1*重復1個或多個前面的一個字符。

grep –o “1*” bqh.log  //-o精確匹配

^.*      以任意多個字符開頭。

.*$      以任意多個字符結尾。

[abc]    匹配字符集合內的任意一個字符【a-zA-Z】

匹配字符集合內的a-z任意一個小寫字符:

[^abc] 匹配不包括^后的任意字符的內容;中括號里的^為取反,注意和以...開頭區別

匹配非數字的任意字符:

a\{n,m\}  重復n到m次,前一個重復的字符。如果有用egrep/sed -r /grep -E可以去掉斜線。

\{n,\}    重復至少n次,前一個重復的字符。如果有用egrep/sed -r 可以去掉斜線。

\{n\}    重復n次,前一個重復的字符。如果有用egrep/sed -r 可以去掉斜線。


注意:egrep,grep -E或sed -r過濾一般特殊字符可以不轉義。多使用參數。

 ---------------------------------------------------------------------------------

擴展的正則表達式:ERP(egrep或grep -E)

+   重復一個或一個以上前面的字符

?  復0個或一個0前面的字符

|   用或的方式查找多個符合的字符串

()  找出“用戶組”字符串


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM