微擎如何做網(wǎng)站百度我的訂單app
目錄
前言
一、grep命令
二、基礎(chǔ)正則表達(dá)式常見(jiàn)元字符
2.1、特殊字符
2.2、定位符
2.3、非打印字符
三、元字符操作實(shí)例
3.1、查找特定字符
3.2、利用中括號(hào)“[]”來(lái)查找集合字符
3.3、查找行首“^”與行尾字符“$”
3.4、查找任意一個(gè)字符“.”與重復(fù)字符“*”
3.5、查找連續(xù)字符范圍“{}”
四、擴(kuò)展正則表達(dá)式
4.1、+?? ?
4.2、?
4.3、|
4.4、()
4.5、()+
前言
正則表達(dá)式,又稱(chēng)規(guī)則表達(dá)式。(英語(yǔ):Regular Expression),在代碼中常簡(jiǎn)寫(xiě)為 regex、regexp 或 RE),計(jì)算機(jī)科學(xué)的一個(gè)概念。
工具:grep sed awk egrep?
正則表達(dá)式通常被用來(lái)檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。
正則表達(dá)式---通常用于判斷語(yǔ)句中,用來(lái)檢查某一字符串是否滿足某一格式
正則表達(dá)式是由普通字符與元字符組成
普通字符包括大小寫(xiě)字母、數(shù)字、標(biāo)點(diǎn)符號(hào)及一些其他符號(hào)
元字符是指在正則表達(dá)式中具有特殊意義的專(zhuān)用字符,可以用來(lái)規(guī)定其前導(dǎo)字符(即位于元字符前面的字符)在目標(biāo)對(duì)象中的出現(xiàn)模式
一、grep命令
格式:grep [選項(xiàng)]… 查找條件 目標(biāo)文件-E :開(kāi)啟擴(kuò)展(Extend)的正則表達(dá)式
-c :計(jì)算找到 '搜尋字符串' 的次數(shù)
-i :忽略大小寫(xiě)的不同,所以大小寫(xiě)視為相同
-o :只顯示被模式匹配到的字符串
-v :反向選擇,亦即顯示出沒(méi)有 '搜尋字符串' 內(nèi)容的那一行!(反向查找,輸出與查找條件不相符的行)
--color=auto :可以將找到的關(guān)鍵詞部分加上顏色的顯示喔!
-n :順便輸出行號(hào)
二、基礎(chǔ)正則表達(dá)式常見(jiàn)元字符
2.1、特殊字符
\ | 轉(zhuǎn)義符,將特殊字符進(jìn)行轉(zhuǎn)義,忽略其特殊意義 |
^ | 匹配行首,^則是匹配字符串的開(kāi)始^tux匹配以tux開(kāi)頭的行 |
$ | 匹配行尾,$則是匹配字符串的結(jié)尾tux$匹配以tux結(jié)尾的行 |
. | 匹配除換行符\r\n之外的任意單個(gè)字符 |
[list] | 匹配list列表中的一個(gè)字符 |
[^list] | 匹配任意不在list列表中的一個(gè)字符 |
* | 匹配前面子表達(dá)式0次或者多次? |
\{n\} | 匹配前面的子表達(dá)式n次 |
\{n,\} | 匹配前面的子表達(dá)式不少于n次 |
\{n,m\} | 匹配前面的子表達(dá)式n到m次 |
注: egrep、awk使用{n}、{n, }、{n, m}匹配時(shí)“{}"前不用加"\”
egrep -E -n 'wo{2}d' test.txt ? //-E 用于顯示文件中符合條件的字符
2.2、定位符
^ 匹配輸入字符串開(kāi)始的位置
$ 匹配輸入字符串結(jié)尾的位置
2.3、非打印字符
\n 匹配一個(gè)換行符
\r 匹配一個(gè)回車(chē)符
\t 匹配一個(gè)制表符
三、元字符操作實(shí)例
準(zhǔn)備一個(gè)文件
3.1、查找特定字符
grep -n 'the' 1.txt
grep -in 'the' 1.txt
grep -vn 'the' 1.txt
3.2、利用中括號(hào)“[]”來(lái)查找集合字符
1、執(zhí)行以下命令即可同時(shí)查找到“shirt”與“short”這兩個(gè)字符串,其中“[]”中無(wú)論有幾個(gè)字符, 都僅代表一個(gè)字符,也就是說(shuō)“[io]”表示匹配“i”或者“o”。
2、查找包含重復(fù)單個(gè)字符“oo”
3、查找“oo”前面不是“w”的字符串
4、不希望“oo”前面存在小寫(xiě)字母
“a-z”表示小寫(xiě)字母,大寫(xiě)字母則通過(guò)“A-Z”表示。
5、查找包含數(shù)字的行
3.3、查找行首“^”與行尾字符“$”
1、查詢(xún)以“the”字符串為行首的行
2、查詢(xún)以小寫(xiě)字母開(kāi)頭的行/查詢(xún)大寫(xiě)字母開(kāi)頭的行/查詢(xún)不以字母開(kāi)頭的行
3、查詢(xún)空白行
3.4、查找任意一個(gè)字符“.”與重復(fù)字符“*”
正則表達(dá)式中小數(shù)點(diǎn)(.)也是一個(gè)元字符,代表任意一個(gè)字符。
“*”代表的是重復(fù)零個(gè)或多個(gè)前面的單字符
1、查找“w??d”的字符串,即共有四個(gè)字符,以 w 開(kāi)頭 d 結(jié)尾。
2、查詢(xún) oo、ooo、ooooo 等資料, 則需要使用星號(hào)(*)元字符。
3、查詢(xún)以 w 開(kāi)頭 d 結(jié)尾,中間包含至少一個(gè) o 的字符串
4、查詢(xún)以 w 開(kāi)頭 d 結(jié)尾,中間的字符可有可無(wú)的字符串。
5、查詢(xún)?nèi)我鈹?shù)字所在行
3.5、查找連續(xù)字符范圍“{}”
1、查詢(xún)兩個(gè) o 的字符
2、查詢(xún)以 w 開(kāi)頭以 d 結(jié)尾,中間包含 2~5 個(gè) o 的字符串
3、查詢(xún)以 w 開(kāi)頭以 d 結(jié)尾,中間包含 2 個(gè)或 2 個(gè)以上 o 的字符串
四、擴(kuò)展正則表達(dá)式
為了簡(jiǎn)化整個(gè)指令,需要使用 ?范圍更廣的擴(kuò)展正則表達(dá)式
grep 命令僅支持基礎(chǔ)正則表達(dá)式,如果使用擴(kuò)展正則表達(dá)式,需要使用 egrep 或 awk 命令
egrep 命令與 grep 命令的用法基本相似。egrep 命令是一個(gè)搜索文件獲得模式,使用該命令可以搜索文件中的任意字符串和符號(hào),也可以搜索一個(gè)或多個(gè)文件的字符串,一個(gè)提示符可以是單個(gè)字符、一個(gè)字符串、一個(gè)字或一個(gè)句子。
4.1、+?? ?
作用:重復(fù)一個(gè)或者一個(gè)以上的前一個(gè)字符
示例:執(zhí)行“egrep -n 'wo+d' test.txt”命令,即可查詢(xún)"wood" "woood" "woooooood"等字符串
4.2、?
作用:零個(gè)或者一個(gè)的前一個(gè)字符
示例:執(zhí)行“egrep -n 'bes?t' test.txt”命令,即可查詢(xún)“bet”“best”這兩個(gè)字符串
4.3、|
作用:使用或者(or)的方式找出多個(gè)字符
示例:執(zhí)行“egrep -n 'of|is|on' test.txt”命令即可查詢(xún)"of"或者"if"或者"on"字符串
4.4、()
作用:查找“組”字符串
示例:“egrep -n 't(a|e)st' test.txt”,查詢(xún)"tast"或者"test"字符串
4.5、()+
作用:辨別多個(gè)重復(fù)的組
示例:查詢(xún)開(kāi)頭的"A"結(jié)尾是"C",中間有一個(gè)以上的"xyz"字符串