grep命令的用法

2021-09-29 02:58:29 字數 3298 閱讀 4729

作為linux中最為常用的三大文字(awk,sed,grep)處理工具之一,掌握好其用法是很有必要的。

首先談一下grep命令的常用格式為:grep  [選項]  」模式「  [檔案]

grep家族總共有三個:grep,egrep,fgrep。

-e :開啟擴充套件(extend)的正規表示式。

-i :忽略大小寫(ignore case)。

-v :反過來(invert),只列印沒有匹配的,而匹配的反而不列印。

-n :顯示行號

-w :被匹配的文字只能是單詞,而不能是單詞中的某一部分,如文字中有liker,而我搜尋的只是like,就可以使用-w選項來避免匹配liker

-c :顯示總共有多少行被匹配到了,而不是顯示被匹配到的內容,注意如果同時使用-cv選項是顯示有多少行沒有被匹配到。

-o :只顯示被模式匹配到的字串。

--color :將匹配到的內容以顏色高亮顯示。

-a  n:顯示匹配到的字串所在的行及其後n行,after

-b  n:顯示匹配到的字串所在的行及其前n行,before

-c  n:顯示匹配到的字串所在的行及其前後各n行,context

1、直接輸入要匹配的字串,這個可以用fgrep(fast grep)代替來提高查詢速度,比如我要匹配一下hello.c檔案中printf的個數:fgrep  -c  "printf"  hello.c

2、使用基本正規表示式,下面談關於基本正規表示式的使用:

匹配字元:

. :任意乙個字元。

[abc] :表示匹配乙個字元,這個字元必須是abc中的乙個。

[a-za-z] :表示匹配乙個字元,這個字元必須是a-z或a-z這52個字母中的乙個。

[^123] :匹配乙個字元,這個字元是除了1、2、3以外的所有字元。

對於一些常用的字符集,系統做了定義:

[a-za-z] 等價於 [[:alpha:]]

[0-9] 等價於 [[:digit:]]

[a-za-z0-9] 等價於 [[:alnum:]]

tab,space 等空白字元 [[:space:]]

[a-z] 等價於 [[:upper:]]

[a-z] 等價於 [[:lower:]]

標點符號 [[:punct:]]

匹配次數:

\ :匹配其前面出現的字元至少m次,至多n次。

\? :匹配其前面出現的內容0次或1次,等價於\。

* :匹配其前面出現的內容任意次,等價於\,所以 ".*" 表述任意字元任意次,即無論什麼內容全部匹配。

位置錨定:

^ :錨定行首

$ :錨定行尾。技巧:"^$"用於匹配空白行。

\b或\

\b或\>:錨定單詞的詞尾。如"\blike\b"不會匹配alike和liker,只會匹配like

\b :與\b作用相反。

分組及引用:

\(string\) :將string作為乙個整體方便後面引用

\1 :引用第1個左括號及其對應的右括號所匹配的內容。

\2 :引用第2個左括號及其對應的右括號所匹配的內容。

\n :引用第n個左括號及其對應的右括號所匹配的內容。

3、擴充套件的(extend)正規表示式(注意要使用擴充套件的正規表示式要加-e選項,或者直接使用egrep):

匹配字元:這部分和基本正規表示式一樣

匹配次數

* :和基本正規表示式一樣

? :基本正規表示式是\?,二這裡沒有\。

:相比基本正規表示式也是沒有了\。

+ :匹配其前面的字元至少一次,相當於。

位置錨定:和基本正規表示式一樣。

分組及引用

(string) :相比基本正規表示式也是沒有了\。

\1 :引用部分和基本正規表示式一樣。

\n :引用部分和基本正規表示式一樣。

或者

a|b :匹配a或b,注意a是指 | 的左邊的整體,b也同理。比如 c|cat 表示的是 c或cat,而不是cat或cat,如果要表示cat或cat,則應該寫為 (c|c)at 。記住(string)除了用於引用還用於分組。

注1:預設情況下,正規表示式的匹配工作在貪婪模式下,也就是說它會盡可能長地去匹配,比如某一行有字串 abacb,如果搜尋內容為 "a.*b" 那麼會直接匹配 abacb這個串,而不會只匹配ab或acb。

注2:所有的正則字元,如 [ 、* 、( 等,若要搜尋 * ,而不是想把 * 解釋為重複先前字元任意次,可以使用 \* 來轉義。

下面用乙個練習來結束本次grep的學習:

在網路配置檔案 /etc/sysconfig/network-scripts/ifcfg-ens33 中檢索出所有的 ip

1、檢索出 0-255的範圍

2、由0-255的數字組合成ip

3、簡化

grep命令的用法

1.作用 linux系統中grep命令是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹 配的行列印出來。grep全稱是global regular expression print,表示全域性正規表示式版本,它的使用許可權是所有使用者。2.格式 grep options 3.主要引數 o...

grep命令的用法

grep命令的用法 grep global search regular re and print out the line,全面搜尋正規表示式並把行列印出來 是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印 出來.引數 1.anum after context num 除了列...

Grep 命令 用法大全

1 引數 i 忽略大小寫 c 列印匹配的行數 l 從多個 檔案中查詢包含匹配項 v 查詢不包含匹配項的行 n 列印包含匹配項的行和行標 2 re 正規表示式 忽略正規表示式中特殊字元的原有含義 匹配正規表示式的開始行 匹配正規表示式的結束行 從匹配正規表示式的行開始 到匹配正規表示式的行結束 單個字...