Linux運維文字處理工具grep與egrep

2021-07-10 11:27:06 字數 3316 閱讀 2633

grep + [選項]+「條件」 +文字檔案

作用:根據「條件」為標準檢索文字把符合條件的行顯示出來。

「條件」:由文字字元和正規表示式元字元編寫。

常用選項

-color=auto:對找到的文字字元著色後高亮顯示,一般在bash中定義grep=』grep –color=auto』,可以用alias命令檢視到。

-i:忽略字元大小寫;

-o:僅顯示匹配到符合條件的文字自身,不顯示行。

-v, –invert-match:反向匹配;

-e:支援擴充套件的正規表示式;

-q, –quiet, –silient:靜默模式,不輸出任何資訊;

-e, –extended-regexp:支援使用擴充套件正規表示式

-f, –fixed-strings:支援使用固定字串,不支援正規表示式,相當於fgrep;

例如:

grep -f "bin" /etc/passwd 可以執行成功,

grep -f ".*bin" /etc/passwd 無法執行成功。

-g, –basic-regexp:支援使用基本正規表示式;

-p, –perl-regexp:支援使用pcre正規表示式;

-e pattern, –regexp=pattern:多模式機制;或的關係

-f file, –file=file:file為每行包含了乙個pattern的文字檔案,即grep script;讀取檔案中的模式

-a num, –after-context=num 將匹配到符合條件的後num行也顯示出來,num指某個數字。

-b num, –before-context=num將匹配到符合條件的前num行也顯示出來,num指某個數字。

-c num, -num, –context=num將匹配到符合條件的前後num行也顯示出來,num指某個數字。

基本正規表示式元字元:

1、字元匹配:

「.」:匹配任意單個字元;

例如:「b..」表示以」b」字元開頭的任意的三個字元,像 「baw」,」bbb」等都符合條件,而「bwer」這樣的不符合條件。

[ ]:匹配範圍內的任意單個字元;

例如:」[ad]b」 表示「ab」或」db」。 「[a-z]」表示a到z的26個英文本母當中的任意小寫字母。 「[a-z]」表示a到z的26個英文本母當中的任意大寫字母。注意:在正規表示式中嚴格區分大小寫,注意與glob通配字元區別。

常用的字元集合:

[:digit:]任意的數字,[:lower:]任意的小寫字母, [:upper:]任意的大寫字母, [:alpha:]任意的字母包括大小寫, [:alnum:]任意的字母和數字, [:space:]任意的空白字元, [:blank:]任意的空白字元或者製表符, [:punct:]任意的標點符號。(補充:可以man 7 glob 找到)

[^]:匹配範圍外的任意單個字元;

例如:[^a-z]=[^[:lower:]] 除了小寫字母外的任意單個字元

2、匹配次數:

用於指定前面字元出現的次數。預設工作與貪婪模式。

「*」:匹配前面的字元出現任意次數(0或1或多次);

例如:grep 「a*b」 表示b之前的a出現任意次」aaaab」,」b」,」ab」都符合條件。

「.*」:任意長度的任意字元。

例如:grep 「a.*b」 表示」a」和」b」之間可以有任意字元也可以沒有字元。

\ +: 前面的字元出現至少一次

例如:grep 「a+b」 表示「b」字元之前的」a」出現的次數》=1。

\?:0或1次 grep」a\?b」表示「b」字元之前的」a」出現的次數為1次或0次。

\ :前面的字元出現m次。 grep」a\ b」表示「b」字元之前的」a」出現的次數為m次。

\ :前面的字元出現[m,n]次為閉區間。 grep」a\ b」表示「b」字元之前的」a」出現的次數為[m,n]次。

\ :前面的字元出現至多n次。grep」a\ b」表示「b」字元之前的」a」出現的次數為[0,n]次。

\ 前面的字元出現至少m次。grep」a\ b」表示「b」字元之前的」a」出現的次數為[m,+∞]次。

3、位置錨定:

用於指定要搜尋的文字出現在目標文字的位置。

^:行首錨定。例如 grep 「^ab」 表示以ab開頭的行

$:行尾錨定。例如 grep 「ab$」 表示以ab結尾的行

「^$」:表示空行。

」^[[:space:]]*$「:表示空白行。

單詞:由非特殊字元組成的連續的字串。

\《或\b:詞首錨定。例如:grep 「\ < ab」 表示找以ab開頭的單詞所在的行,單詞內含有ab但是ab不是詞首的不匹配。

>或\b:詞尾錨定。例如:grep 「ab>」 表示找以ab結尾的單詞所在的行,單詞內含有ab但是ab不是詞尾的不匹配。

\< 單詞 >:單詞錨定。例如:grep 「\ < ab>」表示找有ab單詞的行。

4、分組引用:

\ ( 條件\ ):把括號內的條件找到的結果當作乙個整體來處理。括號裡的條件找到的結果會自動被當作乙個變數表示,正規表示式中以\1,\2,\3……依次表示。例如:

\ (條件1\ )\ (條件2\ )依次用\1,\2 變數表示。

解釋:grep 「\ (a..b\ ).*\1c」 表示匹配出 「a..b任意字元a..bc」這裡如果前面的a..b找到的字元是acdb那麼後面a..bc中的」..」必須是cd。前後要一致。

支援使用擴充套件的正規表示式

用法與grep類似

擴充套件正規表示式的元字元:

字元匹配:

「.」:任意單個字元

[ ]:範圍內的任意單個字元

[^ ]:範圍外的任意單個字元

匹配次數:與grep比較egrep不需要加轉義符」\「

*:任意次;

?:0次或1次;

+:1次或多次;

:匹配m次;

:至少m次,至多n次;

:[0,n]次

:[m,+∞]次

位置錨定:與grep相同

^:行首

$:行尾

\<, \b:詞首

>, \b:詞尾

分組及引用:與grep用法相同grep裡的 \ ( \ )在egrep裡變為()。

或者: 的整個左側|整個右側

a|b:a或者b

a|bc:表示a或bc

(a|b)c:表示ac或bc

Linux文字處理工具

linux中熟練的使用文字處理工具非常的重要,因為linux在設計的時候是採用一切皆檔案的哲學的,甚至連計算機中的配置也都使用偽檔案系統來表示,要查詢裡面的內容就是對檔案進行操作,所以學會使用檔案處理工具事半功倍。而在一切皆物件的windows中,因為物件封裝了所有的操作,包括顯示標準輸出的結果,使...

Linux 文字處理工具

tail f 執行tail f或tail f命令可以觀察檔案正在變化的內容 即跟蹤檔案的變化內容 檔案產生新內容時螢幕會顯示新增內容。seq n sort r head n 1 sort r命令能隨機排序。diff u file 1 file 2 file diff patch d file 1 f...

文字處理工具

參考 man,info,magedu講義 宣告 以下英文純屬個人翻譯,英文b級,歡迎糾正,以下內容純屬個人理解,並沒有對錯,只是參考,盜版不糾,才能有限,希望不誤人子弟為好。these commands read and write entire files,possibly transformin...