主頁(yè) > 知識(shí)庫(kù) > grep中使用\d匹配數(shù)字不成功的原因解決

grep中使用\d匹配數(shù)字不成功的原因解決

熱門(mén)標(biāo)簽:Mysql連接數(shù)設(shè)置 電子圍欄 阿里云 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 服務(wù)器配置 Linux服務(wù)器 團(tuán)購(gòu)網(wǎng)站 銀行業(yè)務(wù)

首先正則表達(dá)式分為三類(man grep可以看到,分別是basic RegExs,extended RegExs,perl RegExs)

正則表達(dá)式:在計(jì)算機(jī)科學(xué)中,是指一個(gè)用來(lái)描述或者匹配一系列符合某個(gè)句法規(guī)則的字符串的單個(gè)字符串。在很多文本編輯器或其他工具里,正則表達(dá)式通常被用來(lái)檢索或替換那些符合某個(gè)模式的文本內(nèi)容。正則表達(dá)式這個(gè)概念最初是由Unix中的工具軟件(例如sed和grep)普及開(kāi)的。

一、正則表達(dá)式分類:

1、基本的正則表達(dá)式(Basic Regular Expression 又叫 Basic RegEx  簡(jiǎn)稱 BREs)

2、擴(kuò)展的正則表達(dá)式(Extended Regular Expression 又叫 Extended RegEx 簡(jiǎn)稱 EREs)

3、Perl 的正則表達(dá)式(Perl Regular Expression 又叫 Perl RegEx 簡(jiǎn)稱 PREs)

 說(shuō)明:只有掌握了正則表達(dá)式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法

二、Linux 中常用文本工具與正則表達(dá)式的關(guān)系

常握 Linux 下幾種常用文本工具的特點(diǎn),對(duì)于我們更好的使用正則表達(dá)式是很有幫助的

grep , egrep 正則表達(dá)式特點(diǎn):

1)grep 支持:BREs、EREs、PREs 正則表達(dá)式

grep 指令后不跟任何參數(shù),則表示要使用 ”BREs“

grep 指令后跟 ”-E" 參數(shù),則表示要使用 “EREs“

grep 指令后跟 “-P" 參數(shù),則表示要使用 “PREs"

2)egrep 支持:EREs、PREs 正則表達(dá)式

egrep 指令后不跟任何參數(shù),則表示要使用 “EREs”

egrep 指令后跟 “-P" 參數(shù),則表示要使用 “PREs"

3)grep 與 egrep 正則匹配文件,處理文件方法

a. grep 與 egrep 的處理對(duì)象:文本文件

b. grep 與 egrep 的處理過(guò)程:查找文本文件中是否含要查找的 “關(guān)鍵字”(關(guān)鍵字可以是正則表達(dá)式) ,如果含有要查找的 ”關(guān)健字“,那么默認(rèn)返回該文本文件中包含該”關(guān)健字“的該行的內(nèi)容,并在標(biāo)準(zhǔn)輸出中顯示出來(lái),除非使用了“>" 重定向符號(hào),

c. grep 與 egrep 在處理文本文件時(shí),是按行處理的

sed 正則表達(dá)式特點(diǎn)

1)sed 文本工具支持:BREs、EREs

sed 指令默認(rèn)是使用"BREs"

sed 命令參數(shù) “-r ” ,則表示要使用“EREs"

2)sed 功能與作用

a. sed 處理的對(duì)象:文本文件

b. sed 處理操作:對(duì)文本文件的內(nèi)容進(jìn)行 --- 查找、替換、刪除、增加等操作

c. sed 在處理文本文件的時(shí)候,也是按行處理的

Awk(gawk)正則表達(dá)式特點(diǎn)

1)Awk 文本工具支持:EREs

awk 指令默認(rèn)是使用 “EREs"

2)Awk 文本工具處理文本的特點(diǎn)

a. awk 處理的對(duì)象:文本文件

b. awk 處理操作:主要是對(duì)列進(jìn)行操作

三、常見(jiàn)3中類型正則表達(dá)式比較

字符 說(shuō)明 Basic RegEx Extended RegEx python RegEx Perl regEx
轉(zhuǎn)義 \ \ \ \
^ 匹配行首,例如'^dog'匹配以字符串dog開(kāi)頭的行(注意:awk 指令中,'^'則是匹配字符串的開(kāi)始) ^ ^ ^ ^
$ 匹配行尾,例如:'^、dog$'匹配以字符串 dog 為結(jié)尾的行(注意:awk 指令中,'$'則是匹配字符串的結(jié)尾) $ $ $ $

^$

匹配空行

^$ ^$ ^$ ^$
^string$ 匹配行,例如:'^dog$'匹配只含一個(gè)字符串 dog 的行 ^string$ ^string$ ^string$ ^string$
\ 匹配單詞,例如:'\frog' (等價(jià)于'\bfrog'),匹配以 frog 開(kāi)頭的單詞 \ \ 不支持 不支持(但可以使用\b來(lái)匹配單詞,例如:'\bfrog')

\&;

匹配單詞,例如:'frog\&;'(等價(jià)于'frog\b '),匹配以 frog 結(jié)尾的單詞 \&; \&; 不支持 不支持(但可以使用\b來(lái)匹配單詞,例如:'frog\b')

\x\&;

匹配一個(gè)單詞或者一個(gè)特定字符,例如:'\frog\&;'(等價(jià)于'\bfrog\b')、'\G\&;' \x\&; \x\&; 不支持 不支持(但可以使用\b來(lái)匹配單詞,例如:'\bfrog\b'

()

匹配表達(dá)式,例如:不支持'(frog)' 不支持(但可以使用\(\),如:\(dog\) () () ()

\(\)

匹配表達(dá)式,例如:不支持'(frog)' \(\) 不支持(同()) 不支持(同()) 不支持(同())

?

匹配前面的子表達(dá)式 0 次或 1 次(等價(jià)于{0,1}),例如:where(is)?能匹配"where" 以及"whereis" 不支持(同\&;) ? ? ?
\&; 匹配前面的子表達(dá)式 0 次或 1 次(等價(jià)于'\{0,1\}'),例如:'where\(is\)\&; '能匹配 "where"以及"whereis" \&; 不支持(同?) 不支持(同?) 不支持(同?)
? 當(dāng)該字符緊跟在任何一個(gè)其他限制符(*, +, ?, {n},{n,}, {n,m}) 后面時(shí),匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對(duì)于字符串 "oooo",'o+?' 將匹配單個(gè)"o",而 'o+' 將匹配所有 'o' 不支持 不支持 不支持 不支持
. 匹配除換行符('\n')之外的任意單個(gè)字符(注意:awk 指令中的句點(diǎn)能匹配換行符) . .(如果要匹配包括“\n”在內(nèi)的任何一個(gè)字符,請(qǐng)使用:'(^$)|(.) . .(如果要匹配包括“\n”在內(nèi)的任何一個(gè)字符,請(qǐng)使用:' [.\n] '
* 匹配前面的子表達(dá)式 0 次或多次(等價(jià)于{0, }),例如:zo* 能匹配 "z"以及 "zoo" * * * *
\+ 匹配前面的子表達(dá)式 1 次或多次(等價(jià)于'\{1, \}'),例如:'where\(is\)\+ '能匹配 "whereis"以及"whereisis" \+ 不支持(同+) 不支持(同+) 不支持(同+)
+ 匹配前面的子表達(dá)式 1 次或多次(等價(jià)于{1, }),例如:zo+能匹配 "zo"以及 "zoo",但不能匹配 "z" 不支持(同\+) + + +

{n}

n 必須是一個(gè) 0 或者正整數(shù),匹配子表達(dá)式 n 次,例如:zo{2}能匹配 不支持(同\{n\}) {n} {n} {n}
{n,} "zooz",但不能匹配 "Bob"n 必須是一個(gè) 0 或者正整數(shù),匹配子表達(dá)式大于等于 n次,例如:go{2,} 不支持(同\{n,\}) {n,} {n,} {n,}
{n,m} 能匹配 "good",但不能匹配 godm 和 n 均為非負(fù)整數(shù),其中 n = m,最少匹配 n 次且最多匹配 m 次 ,例如:o{1,3}將配"fooooood" 中的前三個(gè) o(請(qǐng)注意在逗號(hào)和兩個(gè)數(shù)之間不能有空格) 不支持(同\{n,m\}) {n,m} {n,m} {n,m}

x|y

匹配 x 或 y,例如: 不支持'z|(food)' 能匹配 "z" 或"food";'(z|f)ood' 則匹配"zood" 或 "food" 不支持(同x\|y) x|y x|y x|y

[0-9]

匹配從 0 到 9 中的任意一個(gè)數(shù)字字符(注意:要寫(xiě)成遞增) [0-9] [0-9] [0-9] [0-9]

[xyz]

字符集合,匹配所包含的任意一個(gè)字符,例如:'[abc]'可以匹配"lay" 中的 'a'(注意:如果元字符,例如:. *等,它們被放在[ ]中,那么它們將變成一個(gè)普通字符) [xyz] [xyz] [xyz] [xyz]

[^xyz]

負(fù)值字符集合,匹配未包含的任意一個(gè)字符(注意:不包括換行符),例如:'[^abc]' 可以匹配 "Lay" 中的'L'(注意:[^xyz]在awk 指令中則是匹配未包含的任意一個(gè)字符+換行符) [^xyz] [^xyz] [^xyz] [^xyz]
[A-Za-z] 匹配大寫(xiě)字母或者小寫(xiě)字母中的任意一個(gè)字符(注意:要寫(xiě)成遞增) [A-Za-z] [A-Za-z] [A-Za-z] [A-Za-z]
[^A-Za-z] 匹配除了大寫(xiě)與小寫(xiě)字母之外的任意一個(gè)字符(注意:寫(xiě)成遞增) [^A-Za-z] [^A-Za-z] [^A-Za-z] [^A-Za-z]

\d

匹配從 0 到 9 中的任意一個(gè)數(shù)字字符(等價(jià)于 [0-9]) 不支持 不支持 \d \d

\D

匹配非數(shù)字字符(等價(jià)于 [^0-9]) 不支持 不支持 \D \D
\S 匹配任何非空白字符(等價(jià)于[^\f\n\r\t\v]) 不支持 不支持 \S \S
\s 匹配任何空白字符,包括空格、制表符、換頁(yè)符等等(等價(jià)于[ \f\n\r\t\v]) 不支持 不支持 \s \s
\W

匹配任何非單詞字符 (等價(jià)于[^A-Za-z0-9_])

\W \W \W \W
\w 匹配包括下劃線的任何單詞字符(等價(jià)于[A-Za-z0-9_]) \w \w \w \w
\B 匹配非單詞邊界,例如:'er\B' 能匹配 "verb" 中的'er',但不能匹配"never" 中的'er' \B \B \B \B

\b

匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置,例如: 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的'er' \b \b \b \b
\t 匹配一個(gè)橫向制表符(等價(jià)于 \x09和 \cI) 不支持 不支持 \t \t
\v 匹配一個(gè)垂直制表符(等價(jià)于 \x0b和 \cK) 不支持 不支持 \v \v
\n 匹配一個(gè)換行符(等價(jià)于 \x0a 和\cJ) 不支持 不支持 \n \n
\f 匹配一個(gè)換頁(yè)符(等價(jià)于\x0c 和\cL) 不支持 不支持 \f \f
\r 匹配一個(gè)回車符(等價(jià)于 \x0d 和\cM) 不支持 不支持 \r \r
\\ 匹配轉(zhuǎn)義字符本身"\" \\ \\ \\ \\

\cx

匹配由 x 指明的控制字符,例如:\cM匹配一個(gè)Control-M 或回車符,x 的值必須為A-Z 或 a-z 之一,否則,將 c 視為一個(gè)原義的 'c' 字符 不支持 不支持 \cx

\xn

匹配 n,其中 n 為十六進(jìn)制轉(zhuǎn)義值。十六進(jìn)制轉(zhuǎn)義值必須為確定的兩個(gè)數(shù)字長(zhǎng),例如:'\x41' 匹配 "A"。'\x041' 則等價(jià)于'\x04' "1"。正則表達(dá)式中可以使用 ASCII 編碼 不支持 不支持 \xn

\num

匹配 num,其中 num是一個(gè)正整數(shù)。表示對(duì)所獲取的匹配的引用 不支持 \num \num
[:alnum:] 匹配任何一個(gè)字母或數(shù)字([A-Za-z0-9]),例如:'[[:alnum:]] ' [:alnum:] [:alnum:] [:alnum:] [:alnum:]
[:alpha:] 匹配任何一個(gè)字母([A-Za-z]), 例如:' [[:alpha:]] ' [:alpha:] [:alpha:] [:alpha:] [:alpha:]
[:digit:] 匹配任何一個(gè)數(shù)字([0-9]),例如:'[[:digit:]] ' [:digit:] [:digit:] [:digit:] [:digit:]
[:lower:] 匹配任何一個(gè)小寫(xiě)字母([a-z]), 例如:' [[:lower:]] ' [:lower:] [:lower:] [:lower:] [:lower:]
[:upper:] 匹配任何一個(gè)大寫(xiě)字母([A-Z]) [:upper:] [:upper:] [:upper:] [:upper:]
[:space:] 任何一個(gè)空白字符: 支持制表符、空格,例如:' [[:space:]] ' [:space:] [:space:] [:space:] [:space:]
[:blank:] 空格和制表符(橫向和縱向),例如:'[[:blank:]]'ó'[\s\t\v]' [:blank:] [:blank:] [:blank:] [:blank:]
[:graph:] 任何一個(gè)可以看得見(jiàn)的且可以打印的字符(注意:不包括空格和換行符等),例如:'[[:graph:]] ' [:graph:] [:graph:] [:graph:] [:graph:]
[:print:] 任何一個(gè)可以打印的字符(注意:不包括:[:cntrl:]、字符串結(jié)束符'\0'、EOF 文件結(jié)束符(-1), 但包括空格符號(hào)),例如:'[[:print:]] ' [:print:] [:print:] [:print:] [:print:]

[:cntrl:]

任何一個(gè)控制字符(ASCII 字符集中的前 32 個(gè)字符,即:用十進(jìn)制表示為從 0 到31,例如:換行符、制表符等等),例如:' [[:cntrl:]]'

[:cntrl:]

[:cntrl:]

[:cntrl:]

[:cntrl:]

[:punct:] 任何一個(gè)標(biāo)點(diǎn)符號(hào)(不包括:[:alnum:]、[:cntrl:]、[:space:]這些字符集) [:punct:] [:punct:] [:punct:] [:punct:]
[:xdigit:] 任何一個(gè)十六進(jìn)制數(shù)(即:0-9,a-f,A-F) [:xdigit:] [:xdigit:] [:xdigit:] [:xdigit:]

到此這篇關(guān)于grep中使用"\d"匹配數(shù)字不成功的原因解決的文章就介紹到這了,更多相關(guān)grep "\d"匹配數(shù)字 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • linux 中g(shù)rep 匹配制表符 和 換行符的命令

標(biāo)簽:衢州 棗莊 廣元 衡水 江蘇 大理 萍鄉(xiāng) 蚌埠

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《grep中使用\d匹配數(shù)字不成功的原因解決》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266