grep命令(Global Regular Expression Print)是 Linux系統(tǒng)中一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹 配的行打印出來 。
grep 是linux中最為常用的三大文本(awklinux常用命令linux常用命令,sed,grep)處理工具之一,所以有必要掌握其用法。
grep家族總共有三個成員構成:grep、egrep、fgrep。
grep [選項] 字符串/正則表達式 [文件]
-a 或 --text 不要忽略二進制的數(shù)據(jù)。
-A <顯示列數(shù)> 或--after-context=<顯示列數(shù)> 除了顯示符合范本樣式的那一列之外,并顯示該列之后的內容。
-b 或 --byte-offset 在顯示符合范本樣式的那一列之前,標示出該列第一個字符的位編號。
-B <顯示列數(shù)> 或 --before-context=<顯示列數(shù)> 除了顯示符合范本樣式的那一列之外,并顯示該列之前的內容。
-c 或--count 計算符合范本樣式的列數(shù)。
-C <顯示列數(shù)> 或--context=<顯示列數(shù)>或 -<顯示列數(shù)> 除了顯示符合范本樣式的那一列之外,并顯示該列之前后的內容。
-d <進行動作> 或 --directories=<進行動作> 當指定要查找的是文件夾而非文件時。必須使用這項參數(shù),否則grep指令將回報信息并停止動作。
-e <范本樣式> 或 --regexp=<范本樣式> 指定字符串做為查找文件內容的范本樣式。
-E 或 --extended-regexp 將范本樣式為延伸的普通表示法來使用。
-f <范本文件> 或 --file= <范本文件> 指定范本文件,其內容含有一個或多個范本樣式,讓grep查找符合范本條件的文件內容,格式為每列一個范本樣式。
-F 或 --fixed-regexp 將范本樣式視為固定字符串的列表。
-G 或 --basic-regexp 將范本樣式視為普通的表示法來使用。
-h 或 --no-filename 在顯示符合范本樣式的那一列之前,不標示該列所屬的文件名。
-H 或 --with-filename 在顯示符合范本樣式的那一列之前,表示該列所屬的文件名。
-i 或 --ignore-case 忽略字符大寫和小寫的區(qū)別。
-l 或 --file-with-matches 列出文件內容符合指定的范本樣式的文件名。
-L 或 --files-without-match 列出文件內容不符合指定的范本樣式的文件名。
-n 或 --line-number 在顯示符合范本樣式的那一列之前,標示出該列的列數(shù)編號。
-q 或 --quiet或--silent 不顯示不論什么信息。
-r 或 --recursive 此參數(shù)的效果和指定“-d recurse”參數(shù)同樣。
-s 或 --no-messages 不顯示錯誤信息。
-v 或 --revert-match 反轉查找。
-V或 --version 顯示版本號信息。
-w 或 --word-regexp 僅僅顯示全字符合的列。
-x 或 --line-regexp 僅僅顯示全列符合的列。
-y 此參數(shù)的效果和指定“-i”參數(shù)同樣。
--help 在線幫助。
-c 只輸出匹配行的數(shù)量
-i 不區(qū)分大小寫(只適用于單字符)
-h 查詢多文件時不顯示文件名
-l 查詢多文件時只輸出包含匹配字符的文件名
-n 顯示匹配行及行號
-s 不顯示不存在或無匹配文本的錯誤信息
-v 顯示不包含匹配文本的所有行。
在grep 命令中輸入 字符串參數(shù)時,用雙引號括起來。
例如:grep “error code” ./log.txt
這樣做有兩個原因:
一是以防字符串參數(shù)被誤解為shell命令;
二是可以用來查找多個單詞組成的字符串。如果不用雙引號將其括起來,那么單詞 “code” 將被誤認為是一個文件,查詢結果將返回”文件不存在”的錯誤信息。
在使用變量時,也應該使用雙引號,例如:grep “$ERROR” ./log.txt,如果不這樣,將沒有返回結果。
在調用模式匹配[正則表達式]時,應使用單引號:grep ‘error.*’ ./log.txt
(1)搜索當前目錄
默認情況下,grep 只搜索當前目錄,如果此目錄下有許多子目錄,
grep 會以如下形式列出:
上一個教程:linux 查看系統(tǒng)信息命令
下一個教程:Linux解壓命令大全