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

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

青灯夜游
發布: 2021-04-22 15:24:57
原創
22777 人瀏覽過

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 : 不要忽略二進制的數據。

-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"參數相同。

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

pattern正規表示式主要參數:

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

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

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

\<:從符合正規表示式的行開始。

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

[]:單一字符,如[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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板