1、正則表達(dá)式與通配符
Linux中的正則表達(dá)式(regular expression)和通配符(wildcard)都是用于匹配字符串的工具,但它們之間存在一些區(qū)別和應(yīng)用場景的不同。
正則表達(dá)式是描述一種字符串匹配的模式,通過特殊的字符和語法,可以檢查一個字符串是否匹配某種模式,匹配成功后可以進(jìn)行子串替換、取出符合條件的子串等操作。
比如,使用正則表達(dá)式 runoo+b 可以匹配 runoob、runooob、runoooooob 等字符串,其中 + 表示匹配前面的字符 o 至少一次。Linux系統(tǒng)中常用的正則表達(dá)式引擎包括grep、sed和awk等。
通配符主要用于匹配文件名或路徑名,在Linux系統(tǒng)中通配符可以用來快速查找符合特定規(guī)則的文件名或路徑名。在通配符中,星號 (*)
代表匹配任意長度的任意字符,問號 (?)
代表匹配任意單個字符。
比如,使用通配符 *.txt 可以查找當(dāng)前目錄下所有后綴為 .txt 的文件。除此之外,Linux系統(tǒng)中還有一些其他的通配符,如方括號([])、花括號({})等,可用于更靈活的匹配。
雖然 Linux 中的正則表達(dá)式和通配符都可以用于字符串匹配,但正則表達(dá)式支持更加復(fù)雜的規(guī)則和語法,可以實現(xiàn)更加精確的匹配,通配符相對來說則較為簡單,只能進(jìn)行基本的字符串匹配以及文件名或路徑名匹配。
2、基礎(chǔ)正則表達(dá)式
在 Linux 中,基礎(chǔ)正則表達(dá)式是指 Basic Regular Expressions (BRE),其特點是使用一些基本的元字符來匹配字符串。
以下是一些基礎(chǔ)的元字符及其作用:
-
.
:匹配任意單個字符。比如a.c
可以匹配 abc、adc、axc 等字符串。 -
^
:匹配行首字符。比如^hello
可以匹配行首為 hello 的字符串。 -
$
:匹配行尾字符。比如hello$
可以匹配行末為 hello 的字符串。 -
[]
:字符集,匹配其中的任意一個字符。比如[abc]
匹配 a 或 b 或 c。 -
[^]
:否定字符集,匹配不在其中的任意一個字符。比如[^abc]
匹配除 a、b、c 以外的任意一個字符。 -
\
:轉(zhuǎn)義字符,可以將特殊字符轉(zhuǎn)義為普通字符,例如\.
可以匹配.
字符本身。 -
*
:匹配前面的字符零次或多次。比如ho*l
可以匹配 hl、hol、hool 等字符串。 -
\{m\}
:匹配前面的字符 m 次。比如ho\{2\}l
匹配 hool,但不匹配 hol 或 hoool。 -
\{m,\}
:匹配前面的字符至少 m 次。比如ho\{2,\}l
匹配 hool、hoool、hoooooool 等字符串。 -
\{m,n\}
:匹配前面的字符至少 m 次,至多 n 次。比如ho\{2,4\}l
匹配 hool、hoool、hoooool,但不匹配 hol 或 hoooooool。 -
()
:用于分組操作,例如(abc)+
表示匹配一個或多個 abc。 -
|
:用于選擇操作,例如cat|dog
可以匹配 cat 或 dog。
舉例:
查找包含 he 并以 l 結(jié)尾的行:
grep 'he.*l$' test.txt
查找包含三個連續(xù)小寫字母的單詞:
grep '[a-z]\{3\}' test.txt
查找包含至少三個連續(xù)小寫字母的單詞:
grep '[a-z]\{3,\}' test.txt
查找包含兩到五個連續(xù)小寫字母的單詞:
grep '[a-z]\{2,5\}' test.txt
查找包含 a, e, 或 i 中的任意一個字符的單詞 and 查找不包含 a, e, 或 i 中的任意一個字符的單詞:
grep '[aei]' test.txt
grep '[^aei]' test.txt
查找以 c 開頭,以 t 結(jié)尾,并在中間包含兩個字母的單詞:文章來源:http://www.zghlxwxcb.cn/news/detail-429288.html
grep '^c(..)t$' test.txt
查找包含 e 或 l 的行:文章來源地址http://www.zghlxwxcb.cn/news/detail-429288.html
grep 'e|l' test.txt
到了這里,關(guān)于Shell編程之正則表達(dá)式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!