文本處理器三劍客:grep(查找) sed? awk
正則表達(dá)式:由一類特殊字符以及文本字符所編寫的一種模式,處理文本當(dāng)中的內(nèi)容
其中的一些字符不表示字符的字面含義,這些字符表示控制或者通配的功能
通配符:匹配文件名和目錄名,不能匹配文件內(nèi)容
正則表達(dá)式有兩種匹配結(jié)果:命令結(jié)果和文件內(nèi)容都可以進(jìn)行匹配
通配符:
*:匹配任意一個或多個字符? ? ? ? ? ? ? 例:ls? *.txt
?:匹配任意一個字符? ? ? ? ? ? ? ? ? ? ? 例:ls? ?,txt
[ ] :匹配范圍內(nèi)的任意單個字符? ? ? ? 例:touch? {a..z}.txt? ? ?ls? [a-b].txt
正則表達(dá)式:有兩種形態(tài)? ?1、基本正則表達(dá)式? 2、拓展正則表達(dá)式? 兩者僅限于寫法上的區(qū)別,其他一樣
基本正則:字符匹配,元字符,匹配的部分需要用引號引起來
.:表示匹配任意的單個字符,可以是一個漢字? ?例:ls? |? grep? "12."
\:表示轉(zhuǎn)義符? ?\.才是表示一個點
():表示分組的意思? ? \(\):這時僅表示( )
[ ]:匹配已指定范圍內(nèi)的任意單個字符? ? ?
例:[0-9]? [A-Z]? [a-z]? ? ? ? ? ? ? ?ls? |? grep? "[0-9]"? ? 顯示所有:ls? |? grep? "[0-9? a-z? A-Z]"? ?標(biāo)準(zhǔn)寫法
[ ^ ]:表示取反,指定范圍外的? ??
例:ls? |? grep? "[A-Z0-9.]"? ? ?.也算字符
例:以rc開頭,任意單個字符,0-6的數(shù)字
?只匹配以rc.為開頭的文件
?過濾/etc/passwd中任意的兩個字符r和t
?文章來源地址http://www.zghlxwxcb.cn/news/detail-599586.html
總結(jié):通配符不能完全匹配大小寫,真正的大小寫在正則表達(dá)式中
表示匹配不是a或者z的任意字符
正則表達(dá)式中表示次數(shù)的表達(dá)式:
*:匹配前面的字符任意次,0次也行,無數(shù)次也行,有多少匹配多少,沒有也行
?.*:也是匹配任意長度的字符,但是至少要有一次,不包括0次
最少前面要有一個o,否則不匹配
?\?:表示匹配前面的字符0次或者1次(即可有可無)
?有則匹配,沒有也匹配
\+:匹配前面的字符至少一次,最多可以無數(shù)次
\{n\}:匹配前面的字符=n次? ?精確匹配? n:表示前面字符出現(xiàn)的次數(shù),多一次少一次都不行、、
?
\{m,n\}:匹配前面的字符最少m次,最多n次
?
\{,n\}:匹配前面的字符最多n次? ? ?大于n不行? ? o最少出現(xiàn)n次
\{n,\}:匹配前面的字符至少n次? ? ?小于n不行
匹配次數(shù)就是核心
位置錨定:以什么為開頭,以什么為結(jié)尾
^:以什么為開頭,在模式的左側(cè)? ?^r? 以r為開頭
$:以什么最為結(jié)尾,在模式的右側(cè)? ? r$? 以r為結(jié)尾
^? root? $:用于匹配整行,而且整行中只有一個root,多一個少一個都不行
^$:匹配空行? ?
?
詞首錨定和詞尾錨定(用的較少)
詞尾鉚釘:<或者 \b? 推薦用\b因為更直觀,用\b的位置來判斷詞首和詞尾
詞首錨定:>或者 \b??
?例:
?
分組:用()進(jìn)行表示? ?
精確匹配 \{\} 一定要連續(xù)出現(xiàn)? ? ?\{,3\} 就不用連續(xù)出現(xiàn)
\{n\} 表示正好n次,n次表示前面的字符必須連續(xù)出現(xiàn)才能出現(xiàn)
\{,n\} 只要出現(xiàn)幾次都算,除非沒有
例:
?
?
只匹配gogle?
\ |:表示邏輯或
?
擴(kuò)展正則:就是把 \?去掉不用再寫,但是也有要求 grep? 要寫成? grep? -E? 或 egrep
文章來源:http://www.zghlxwxcb.cn/news/detail-599586.html
?
到了這里,關(guān)于正則表達(dá)式與文本處理器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!