grep匹配字串

2022-05-22 06:48:07 字數 2739 閱讀 9429

基本正規表示式

元資料意義和範例

^word

搜尋以word開頭的行。

例如:搜尋以#開頭的指令碼注釋行

grep –n 『^#』 regular.txt

word$

搜尋以word結束的行

例如,搜尋以『.』結束的行

grep –n 『.$』 regular.txt

.匹配任意乙個字元。

例如:grep –n 『e.e』 regular.txt

匹配e和e之間有任意乙個字元,可以匹配eee,eae,eve,但是不匹配ee。

\轉義字元。

例如:搜尋』,』是乙個特殊字元,在正規表示式中有特殊含義。必須要先轉義。

grep –n 『\」 regular.txt

*前面的字元重複0到多次。

例如匹配gle,gogle,google,gooogle等等

grep –n 『go*gle』 regular.txt

[list]

匹配一系列字元中的乙個。

例如:匹配gl,gf。

grep –n 『g[lf]』 regular.txt

[n1-n2]

匹配乙個字元範圍中的乙個字元。

例如:匹配數字字元

grep –n 『[0-9]』 regular.txt

[^list]

匹配字符集以外的字元

例如:grep –n 『[^o]『 regular.txt

匹配非o字元

\前面的字元重複n1,n2次

例如:匹配google,gooogle。

grep –n 『go\gle』 regular.txt

\單詞是的開頭。

例如:匹配以g開頭的單詞

grep –n 『\

word\>

匹配單詞結尾

例如:匹配以tion結尾的單詞

grep –n 『tion\>』 regular.txt

擴充套件正規表示式

grep一般情況下支援基本正規表示式,可以通過引數-e支援擴充套件正規表示式,另外grep單獨提供了乙個擴充套件命令叫做egrep用來支援擴充套件正規表示式,這條命令和grep -e等價。雖然一般情況下,基本正規表示式就夠用了。特殊情況下,複雜的擴充套件表示式,可以簡化字串的匹配。

擴充套件正規表示式就是在基本正規表示式的基礎上,增加了一些元資料。

元資料意義和範例

+重複前面字元1到多次。

例如:匹配god,good,goood等等字串。

grep –ne go+d』 regular.txt

?匹配0或1次前面的字元

例如,匹配gd,god

grep –ne 『go?d』 regular.txt

|或(or)的方式匹配多個字串  

例如:grep –ne 『god|good』 regular.txt

匹配god或者good。

()匹配整個括號內的字串,原來都是匹配單個字元

例如:搜尋good或者glad

grep –ne 『g(oo|la)』 regular.txt

()前面的字元重複0到多次。

例如匹配gle,gogle,google,gooogle等等

grep –ne 『go*gle』 regular.txt

1、grep -rn "hello,world!" *

* : 表示當前目錄所有檔案,也可以是某個檔名

-r 是遞迴查詢

-n 是顯示行號

-r 查詢所有檔案包含子目錄

-i 忽略大小寫

下面是一些有意思的命令列引數:

grep -i pattern files :不區分大小寫地搜尋。預設情況區分大小寫, 

grep -l pattern files :只列出匹配的檔名, 

grep -l pattern files :列出不匹配的檔名, 

grep -w pattern files :只匹配整個單詞,而不是字串的一部分(如匹配『magic』,而不是『magical』), 

grep -c number pattern files :匹配的上下文分別顯示[number]行, 

grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行, 

grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。 

這裡還有些用於搜尋的特殊符號:

\< 和 \> 分別標註單詞的開始與結尾。

例如: 

grep man * 會匹配 『batman』、『manic』、『man』等, 

grep '\grep '\' 只匹配『man』,而不是『batman』或『manic』等其他的字串。 

'^':指匹配的字串在行首, 

'$':指匹配的字串在行尾,  

注:「全字匹配」是指

匹配的部分兩邊沒有word constituent(字母、數字和下劃線),而不是要求匹配的部分全部由word constituent組成,如

eth0和eth0:1: grep -w eth0時兩者都會顯示,eth0和eth0_1: grep -w eth0時只顯示eth0

2,xargs配合grep查詢

find -type f -name '*.php'|xargs grep 'grouprecord'

字串匹配

題目描述 讀入資料string 然後讀入乙個短字串。要求查詢string 中和短字串的所有匹配,輸出行號 匹配字串。匹配時不區分大小寫,並且可以有乙個用中括號表示的模式匹配。如 aa 123 bb 就是說aa1bb aa2bb aa3bb都算匹配。輸入 輸入有多組資料。每組資料第一行輸入n 1 n ...

字串匹配

time limit 1000ms memory limit 65536k 給定兩個字串string1和string2,判斷string2是否為string1的子串。輸入包含多組資料,每組測試資料報含兩行,第一行代表string1,第二行代表string2,string1和string2中保證不出現...

字串匹配

面試題 給一串很長的字串,要求找到符合要求的字串,例如目的串 123 1 3 2 12 3 這些都要找出來 思路一 利用兩層迴圈,逐個查詢目的串中的字元,比如先查詢字元 1 是否在長字串中,再查詢 2 是否在長字串中,直到目的串遇到 0 是 include include include int m...