日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

UNIX 新手指南,第 3 部分:正則表達(dá)式( 三 )


方括號中的短橫線
通過在方括號中包括附加集合,您還可以搜索多個字符序列 。例如,若要搜索 a-z 和 A-Z,可以使用以下搜索:
grep g[a-zA-Z]lf
脫字號 (^)
當(dāng)您的字符序列列表變得更長時,可能發(fā)現(xiàn)通過避免某些字符而不是指定想要查找的字符來進(jìn)行搜索會更容易 。這可以通過在搜索序列前在方括號中使用脫字符 (^) 來實(shí)現(xiàn) 。這說起來挺復(fù)雜的,但是通過觀察一個示例,應(yīng)該是很容易理解的 。通過使用以下 grep 命令來更改您的搜索,以避免數(shù)字但是包括所有其他字符:
grep g[^0-9]lf
此搜索類似于前面查找所有字母字符的搜索,但是此搜索還返回諸如數(shù)字符號 (#) 和美元符號 ($) 等不屬于字母并且也不在您排除的數(shù)字序列中的字符 。
星號
要試驗的下一個特殊字符是星號 (*),它是若干個重復(fù)操作符之一 。大多數(shù)人都非常熟悉在命令行上使用星號作為文件名搜索條件(通配符),但是在正則表達(dá)式中使用星號還是相當(dāng)新鮮的 。星號指示搜索項(前一個字符或方括號表達(dá)式)可以出現(xiàn)零次、一次或多次 。若要對此進(jìn)行嘗試,請將以下行添加到您已經(jīng)在使用的 grep.txt 文件:
This time the o is missing in glf.
Some people might say goolf.
But they would not say goilf.
現(xiàn)在整個文件應(yīng)該類似如下:
I like golf.
Golf is played on grass.
I created gilf.
What is g2lf?
This time the o is missing in glf.
Some people might say goolf.
But they would not say goilf.
嘗試在 golf 中的 o 后面使用星號:
grep go*lf grep.txt
您的搜索將返回具有單詞 golf、glf 和 goolf 的行:
I like golf.
This time the o is missing in glf.
Some people might say goolf.
問號
另一個重復(fù)操作符是問號 (?) 。問號的功能與星號類似,只不過搜索項可以出現(xiàn)零次或一次 。多個實(shí)例將不匹配 。使用問號取代星號來嘗試您剛才執(zhí)行的搜索:
grep go?lf grep.txt
可以看到,這次作為匹配結(jié)果返回了 golf 和 glf,但是沒有返回 goolf,因為其中存在問號前的搜索項 o 的多個實(shí)例:
I like golf.
This time the o is missing in glf.
加號
最后一個常規(guī)重復(fù)操作符是加號 ( ) 。加號將查找某個搜索項出現(xiàn)一次或多次的情況 。與星號不同,必須至少找到一個實(shí)例才會匹配 。請嘗試以下示例:
grep go lf grep.txt
這次,該搜索返回 golf 和 goolf,但它不返回 glf,因為沒有找到 o:
I like golf.
Some people might say goolf.
行首和行尾定位點(diǎn)
在轉(zhuǎn)向 sed 之前,最后要學(xué)習(xí)的特殊字符是行首定位點(diǎn)(使用脫字符來實(shí)現(xiàn))和行尾定位點(diǎn)(使用美元符號來實(shí)現(xiàn)) 。您可能記得,您在本教程的前面使用過脫字符來對方括號表達(dá)式取反 。當(dāng)在方括號之外使用脫字符時,它執(zhí)行完全不同的功能 。將脫字符放在正則表達(dá)式開頭將告訴該搜索僅操作行的開頭 。換句話說,正則表達(dá)式中的第一個字符(脫字符之后)必須與新行上的第一個字符匹配才能匹配該行 。類似地,將美元符號放在正則表達(dá)式的結(jié)尾以指示您僅希望返回與行尾匹配的結(jié)果 。換句話說,正則表達(dá)式中的最后一個字符(美元符號之前)必須與某行上的最后一個字符匹配才能匹配該行 。若要對此進(jìn)行測試,請將以下兩行添加到 grep.txt:
golf has been a fine example
let's talk about something besides golf
請注意,對于此測試,您不應(yīng)該對 golf 進(jìn)行大寫或加標(biāo)點(diǎn),因為它將演示一個針對同一單詞的搜索,此搜索使用定位點(diǎn)在行尾或行首以不同的方式操作 。若要測試行首定位點(diǎn),請輸入以下命令:

推薦閱讀