Linux基礎系列 - 三劍客之 grep 命令使用總結
grep
命令是用來搜尋文字的命令列工具,現在大部分Linux發行版本都集成了該命令列工具。該命令列是英文“ globally search a regular expression and print ”的簡寫,就是可以通過正則來搜尋並列印結果。
grep
最早是unix系統中的命令列工具,有多個擴充套件版本,如下:
egrep fgrep
不過,以上擴充套件版本基本都可以使用引數來獲取相同的功能,可分別使用-E
和-F
。其他相似的命令還有zgrep
,它可以直接搜尋使用gzip
壓縮的檔案內容。
使用方法
# 語法 grep [options] match_pattern file_name grep [options] "match_pattern" file_name
常用引數選項
-a 不要忽略二進位制資料。 -A<顯示列數> 除了顯示符合範本樣式的那一行之外,並顯示該行之後的內容。 -b 在顯示符合範本樣式的那一行之外,並顯示該行之前的內容。 -c 計算符合範本樣式的列數。 -C<顯示列數>或-<顯示列數>除了顯示符合範本樣式的那一列之外,並顯示該列之前後的內容。 -d<進行動作> 當指定要查詢的是目錄而非檔案時,必須使用這項引數,否則grep命令將回報資訊並停止動作。 -e<範本樣式> 指定字串作為查詢檔案內容的範本樣式。 -E 將範本樣式為延伸的普通表示法來使用,意味著使用能使用擴充套件正則表示式。 -f<範本檔案> 指定範本檔案,其內容有一個或多個範本樣式,讓grep查詢符合範本條件的檔案內容,格式為每一列的範本樣式。 -F 將範本樣式視為固定字串的列表。 -G 將範本樣式視為普通的表示法來使用。 -h 在顯示符合範本樣式的那一列之前,不標示該列所屬的檔名稱。 -H 在顯示符合範本樣式的那一列之前,標示該列的檔名稱。 -i 忽略字元大小寫的差別。 -l 列出檔案內容符合指定的範本樣式的檔名稱。 -L 列出檔案內容不符合指定的範本樣式的檔名稱。 -n 在顯示符合範本樣式的那一列之前,標示出該列的編號。 -q 不顯示任何資訊。 -R/-r 此引數的效果和指定“-d recurse”引數相同。 -s 不顯示錯誤資訊。 -v 反轉查詢。 -w 只顯示全字符合的列。 -x 只顯示全列符合的列。 -y 此引數效果跟“-i”相同。 -o 只輸出文件中匹配到的部分。
常用例項
# 多個檔案搜尋 grep "match_pattern" file_1 file_2 file_3 grep "match_pattern" file_* # 反向搜尋 grep -v "match_pattern" file_name # 標記匹配顏色 grep "match_pattern" file_name --color=auto # 搜尋本目錄及子目錄中所有檔案 grep "text" . -r # 搜尋檔案中排除,或包含指定檔案 grep "main()" . -r --include *.{php,html} grep "main()" . -r --exclude "README" # 靜默執行。不會輸出任何資訊,如果命令執行成功返回0,失敗則返回非0值。一般用於條件測試。 grep -q "test" filename # 列印匹配,之前或之後的行 grep "5" -A 3# 列印匹配結果行之前3行 grep "5" -B 3# 列印匹配結果行之後3行 grep "5" -C 3# 列印匹配結果行之前和之後各3行
參考
- ofollow,noindex">http://man.linuxde.net/grep
- https://zh.wikipedia.org/wiki/Grep