grep命令詳解

2021-09-26 03:55:23 字數 3422 閱讀 5075

linux grep 命令用於查詢檔案裡符合條件的字串。 grep

指令用於查詢內容包含指定的範本樣式的檔案,如果發現某檔案的內容符合所指定的範本樣式,預設 grep

指令會把含有範本樣式的那一列顯示出來。若不指定任何檔名稱,或是所給予的檔名為 -,則 grep 指令會從標準輸入裝置讀取資料。

grep[-abcefghhillnqrsvvwxy][-a《顯示列數》][-b《顯示列數》][-c《顯示列數》][-d《進行動作》][-e《範本樣式》][-f《範本檔案》][–help][範本樣式][檔案或目錄…]

a 或 --text : 不要忽略二進位制的資料。

-a《顯示行數》 或 --after-context=《顯示行數》 : 除了顯示符合範本樣式的那一列之外,並顯示該行之後的內容。

-b 或 --byte-offset : 在顯示符合樣式的那一行之前,標示出該行第乙個字元的編號。

-b《顯示行數》 或 --before-context=《顯示行數》 : 除了顯示符合樣式的那一行之外,並顯示該行之前的內容。

-c 或 --count : 計算符合樣式的列數。

-c《顯示行數》 或 --context=《顯示行數》或-《顯示行數》 : 除了顯示符合樣式的那一行之外,並顯示該行之前後的內容。

-d 《動作》 或 --directories=《動作》 : 當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep指令將回報資訊並停止動作。

-e《範本樣式》 或 --regexp=《範本樣式》 : 指定字串做為查詢檔案內容的樣式。

-e 或 --extended-regexp : 將樣式為延伸的普通表示法來使用。

-f《規則檔案》 或 --file=《規則檔案》 : 指定規則檔案,其內容含有乙個或多個規則樣式,讓grep查詢符合規則條件的檔案內容,格式為每行乙個規則樣式。

-f 或 --fixed-regexp : 將樣式視為固定字串的列表。

-g 或 --basic-regexp : 將樣式視為普通的表示法來使用。

-h 或 --no-filename : 在顯示符合樣式的那一行之前,不標示該行所屬的檔名稱。

-h 或 --with-filename : 在顯示符合樣式的那一行之前,表示該行所屬的檔名稱。

-i 或 --ignore-case : 忽略字元大小寫的差別。

-l 或 --file-with-matches : 列出檔案內容符合指定的樣式的檔名稱。

-l 或 --files-without-match : 列出檔案內容不符合指定的樣式的檔名稱。

-n 或 --line-number : 在顯示符合樣式的那一行之前,標示出該行的列數編號。

-o 或 --only-matching : 只顯示匹配pattern 部分。

-q 或 --quiet或–silent : 不顯示任何資訊。

-r 或 --recursive : 此引數的效果和指定"-d recurse"引數相同。

-s 或 --no-messages : 不顯示錯誤資訊。

-v 或 --revert-match : 顯示不包含匹配文字的所有行。

-v 或 --version : 顯示版本資訊。

-w 或 --word-regexp : 只顯示全字符合的列。

-x --line-regexp : 只顯示全列符合的列。

-y : 此引數的效果和指定"-i"引數相同。

[[:upper:]]——[a-z]

[[:lower:]]——[a-z]

[[:digit:]]——[0-9]

[[:alnum:]]——[0-9a-za-z]

[[:space:]]——空格或tab

[[:alpha::]]——[a-za-z]

\:忽略正規表示式中特殊字元的原有含義

^:匹配正規表示式的開始行

$:匹配正規表示式的結束行

<:從匹配正規表示式的行開始

>:到匹配正規表示式的行結束

[ ]:單個字元,如[a],a符合要求

[-]:範圍,如[a-c],a,b,c都符合要求

.:所有的單個字元

*:所有字元,長度可以為0

1.「*」前乙個字元匹配 0 次,或任意多次

[root@localhost ~]# grep 「a*」 test_rule.txt

如果正規表示式是「aaa*」,則會匹配最少包含兩個連續 a 的字串,如:

[root@localhost ~]# grep 「aaa*」 test_rule.txt

he never saaaid those words.

because,actuaaaally,

如果正規表示式是「aaaaa*」,則會匹配最少包含四個個連續 a 的字串,如:

[root@localhost ~]# grep 「aaaaa*」 test_rule.txt

because,actuaaaally,

2.「.」 匹配除了換行符外任意乙個字元 正規表示式「.」只能匹配乙個字元,這個字元可以是任意字元,舉個例子:

[root@localhost ~]# grep 「s…d」 test_rule.txt mr.

li ming said:

later,mr. li ming soid his hot body.

#「s…d」會匹配在 s 和 d 這兩個字母之間一定有兩個字元的單詞

[root@localhost ~]# grep 「s.*d」 test_rule.txt

mr. li ming said:

he never saaaid those words.

later,mr.

li ming soid his hot body.

#最後一句話比較有意思,匹配的是「soid his hot bod」

「」 匹配中括號中指定的任意乙個字元,只匹配乙個字元

[root@localhost ~]# grep 「s[ao]id」 test_rule.txt

而「[0-9]」會匹配任意乙個數字,如:

[root@localhost ~]# grep 「[0-9]」 test_rule.txt

「\」 轉義符

[root@localhost ~]# grep 「.$」 test_rule.txt

「\」表示其前面的字元恰好出現 n 次

[root@localhost ~]# grep 「a」 test_rule.txt

grep命令詳解

grep命令是linux下的行過濾工具,其引數繁多,下面就一一介紹個個引數的作用,希望對大家有所幫助。grep print lines matching a pattern 將符合樣式的該行列出 語法 grep options pattern file.grep用以在file內文中比對相對應的部分,...

grep命令詳解

一 簡介 grep 是一種強大的 文字搜尋工具 它能使用正規表示式搜尋文字,並把匹配的行列印出來。unix的grep家族包括 grep egrep 和fgrep egrep 和fgrep 的命令只跟grep有很小不同。egrep是grep的擴充套件,支援更多的re元字元,fgrep就是fixed g...

grep 命令詳解

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