grep [options] pattern [file....]
-i:不區分大小寫
--color:高亮顯示匹配字元
-v:顯示沒有被匹配到的行
-o:只顯示被匹配到的字串
-e:使用擴充套件正規表示式
*:任意長度的任意字元
?:匹配任意單個字元
:匹配指定範圍內的任意字元
[^]:匹配指定範圍外的字元
-a n:顯示匹配到行下面n行
-b n:顯示匹配到行上面n行
-c n:顯示匹配到行前後n行
正規表示式:regexp
basic regexp:基本正規表示式
extended regexp:擴充套件正規表示式
基本正規表示式
grep預設使用基本正規表示式,使用-e引數表示使用副檔名正規表示式
元字元.:匹配任意單個字元
:匹配指定範圍內的任意單個字元
[^]:匹配指定範圍外的任意單個字元
同時也支援萬用字元:
[a-z],[a-z],[0-9],[a-za-z],[0-9a-za-z]
[[:space:]]:空白字元
[[:punct:]]:標點符號
[[:lower:]]:小寫字母
[[:upper:]]:大寫字母
[[:alpha:]]:大小寫字母
[[:digit:]]:數字
[[:alnum:]]:數字和大小寫字母
次數匹配
*:匹配其前面字元任意次
a,b,ab,aab,acb,acdb
a*b則只可以匹配b,ab,aab
.*:任意長度的任意字元
?:匹配其前面的字元一次或0次,一般需要使用\?轉義
a,b,ab,aab,acb,acdb
a\?b則只可以匹配b,ab,aab,acb,acdb
注:grep是在行中查詢,因此只要按照模式匹配到部分字元就可以匹配
\:匹配其前面字元,至少m次,至多n次。
\:至少一次
\:至少0次至多5次
1
2
[root@liang-study basic]
# grep '[[:space:]]\[0-9]\$' a.txt
1
位置錨定:
^:錨定行首,此字元後面的任意內容必須出現在行首
$:錨定行尾,此字元後面的任意內容必須出現在行尾
^$:空白行
\《或者\b:其後面的字元必須作為片語的首部出現,注意書寫位置
\>或者\b:其前面的字元必須作為片語的尾部出現,注意書寫位置
例子:\:表示查詢包含root作為單獨片語的行
分組:\(\)
\(ab\)*:表示匹配ab任意次,即要麼有ab,要麼沒有ab,所以全部都會匹配。如abab,ababc,a,b。
1
2
3
4
5
[root@liang-study basic]
# grep '\(ab\)\' a.txt
23ab
ab
aab
aaab
上例,就表示匹配包含ab的1-3次
\(ab\).*\1:引用第乙個左括號以及與之對應的右括號中間的所有內容
\2\3
1
2
3
[root@liang-study basic]
# grep '\(ab\).*\1' a.txt
23ab cdh ab
aab root ab
上例中表示匹配到ab後由任意字元後再次匹配ab的行
1
2
[root@liang-study basic]
# grep '\(ab\).*\(cd\).*\2' a.txt
23ab cdh ab
cd
匹配第二個左括號以及與之對應的右括號中間的所有內容
擴充套件正規表示式
字元匹配:
.:匹配任意單個字元(類基本)
:匹配指定範圍內的任意單個字元(類基本)
[^]:匹配指定範圍外的任意單個字元(類基本)
次數匹配:
*:匹配其前面字元任意次(類基本)
?:匹配其前面的字元一次或0次,一般不需要使用\轉義
+:匹配其前面字元至少一次
(m,n):匹配其前面字元,至少m次,至多n次。一般不需要使用\轉義
位置錨定:(和基本正規表示式相同)
分組:(ab):
(ab):引用第乙個左括號以及與之對應的右括號中間的所有內容
(ab):引用第2個左括號以及與之對應的右括號中間的所有內容
|和or:表示或者
注:可以看出此匹配是完整匹配a|a左邊和右邊。
注:經過分組匹配,即可匹配ab或者ab了
例子:獲取ifconfig 0-255之間的整數
1
2
3
4
5
6
ifconfig
|
grep
-e --color
'\'
[1-9]:匹配符合條件的個位數
[1-9][0-9]:匹配符合條件的兩位數
1[1-9][0-9]:匹配符合條件的1xx的三位數
2[0-4][0-9]:匹配符合條件的2xx的三位數
25[0-4]:匹配符合條件的25x的三位數
linux基礎命令grep
目的 使用grep命令來查詢檔案中符合條件的字串 格式 grep 選項 查詢模式 檔名 舉例項看看 建立乙個檔案test1.txt,檔案的內容是 aaaaaaaaa abcabcabcabc cbacbacba match pattern nand erase 首先在查詢字串時,我們希望顯示如下內容...
linux 正則化以及grep命令
cut命令 取 path路徑裡第二個 f2 c處理規整資料 grep命令 基於行操作 查詢特定字串 grep n the regular express 在regular express檔案裡查詢the,n代表顯示行號 grep vn the regular express v代表查詢沒有 the ...
Linux基礎 grep匹配命令
正則就是有一定規律的字串,不僅可以使用命令列工具grep,sed,awk egrep去引用正則,還可以把正則嵌入到 nginx,apache,甚至php,python中。特殊符號 grep,主要用來過濾出指定的行。指定的條件,用正規表示式。1 語法選項 grep civnabc word filen...