Linux系統中grep指令是一種強大的文本搜尋工具,它能使用正規表示式搜尋文本,並把符合的行列印出來,其使用語法是「grep [options] pattern [files] 」。
本文操作環境: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中文網其他相關文章!