首頁  >  文章  >  運維  >  linux中如何使用grep指令? (詳解)

linux中如何使用grep指令? (詳解)

青灯夜游
青灯夜游原創
2019-03-06 16:12:3522597瀏覽

Linux系統中grep指令是一種強大的文本搜尋工具,它能使用正規表示式搜尋文本,並把符合的行列印出來,其使用語法是「grep [options] pattern [files] 」。

linux中如何使用grep指令? (詳解)

本文操作環境:linux5.9.8系統、Dell G3電腦。

Linux grep指令

Linux grep指令用來尋找檔案裡符合條件的字串;也可以用來尋找內容包含指定的範本樣式的檔案。它能使用正規表示式搜索,用於在文件中搜尋指定的字串模式,列出包含匹配模式子符串的文件名,並輸出包含該字串的文本行。

grep的工作方式是這樣的:它在一個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被視為檔案名稱。搜尋的結果送到標準輸出,不影響原文件內容。

基本語法:

grep [options] pattern [files]

[options]的主要參數:

-a 或--text : 不要忽略二進制的數據。

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

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

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

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

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

-d ad72607a47f50c15474609c53cc6e859 或--directories=ad72607a47f50c15474609c53cc6e859 : 當指定要尋找的是目錄而非檔案時,必須使用此參數,否則grep指令將回報資訊並停止動作。

-ea16dfb69d57613d94e84f15125682c03 或 --regexp=a16dfb69d57613d94e84f15125682c03 : 指定字串做為尋找檔案內容的樣式。

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

-faab638781c9d525dcc2966c830b77b0a 或--file=aab638781c9d525dcc2966c830b77b0a : 指定規則文件,其內容含有一個或多個規則樣式,讓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"參數相同。

-?:同時顯示匹配行上下的?行,如:grep -2 pattern filename同時顯示符合行的上下2行。

pattern正規表示式主要參數:

\:忽略正規表示式中特殊字元的原始意義。

^:符合正規表示式的開始行。

$:符合正規表示式的結束行。

\7d116f213a8c64da4e16cf152e115de9:到符合正規表示式的行結束。

[]:單一字符,如[A]即A符合要求。

[ - ]:範圍,如[A-Z],即A、B、C一直到Z都符合要求。

.:所有的單一字元。

*:有字符,長度可以為0。

程式碼範例:

範例1:在目前目錄中,找出前綴有「test」字樣的文件中包含「test」字串的文件,並列印出該字串的行,此時,可以使用以下命令:

grep test test*

輸出:

testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行  
testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行  
testfile_2:Linux test #列出testfile_2 文件中包含test字符的行

範例2:反向查找,透過"-v"參數可以列印出不符合條件行的內容。在尋找檔案名稱中包含test 的檔案中不包含test 的行 

grep -v test *test*

輸出:

testfile1:helLinux!  
testfile1:Linis a free Unix-type operating system.  
testfile1:Lin  
testfile_1:HELLO LINUX!  
testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.  
testfile_1:THIS IS A LINUX TESTFILE!  
testfile_2:HELLO LINUX!  
testfile_2:Linux is a free unix-type opterating system.

相关linux视频教程推荐:《linux语言教程

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注php中文网相关教程栏目!!!

以上是linux中如何使用grep指令? (詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn