linux常備工具之grep
阿新 • • 發佈:2018-12-18
grep能夠在一個或多個檔案中搜索指定的模式或關鍵字,該命令的一般格式為:
grep pattern files
用grep搜尋檔案內容
先來看一下grep最簡單的用法。假設當前目錄有一個文字檔案c.txt,它的內容如下
$ cat c.txt
jobcenter-test-1
jobcenter-test-2
jobcenter-test-3
jobcenter-prod-1
jobcenter-prod-2
jobcenter-prod-3
假設我們想找出包含prod
的所有行,可以使用下面的命令
$ grep prod c.txt jobcenter-prod-1 jobcenter-prod-2 jobcenter-prod-3
這樣就很簡單地完成了對單個檔案內容的搜尋。
$ grep keywords file1 file2 file3
上面的用法可以同時對三個檔案的內容進行搜尋
$ grep keywords *
上面的用法可以同時對當前目錄下的所有檔案的內容進行搜尋
在管道中使用grep來檢索輸入
如果不指定檔名的話,grep將對標準輸入進行搜尋,這種用法經常出現在linux管道中。例如:
$ ls -l | grep file1
上面的用法僅會列出file1的檔案資訊。
$ ps -ef | grep process_name
上面的用法常用於查詢一個程序的資訊。
$ tail -f a.log | grep --line-buffered keywords
結合--line-buffered
引數,還可以對tail -f
的結果進行過濾。上面的用法常用來過濾某些正在持續寫入的日誌檔案。
搜尋時的常用引數
使用grep搜尋時,配合下面的引數,可以應對更多的情況。下面是我個人比較常用的引數
-i
忽略大小寫。-v
反向搜尋,不顯示滿足搜尋條件的。(正常情況下是隻顯示滿足搜尋條件的)-e
使用正則表示式-E
使用擴充套件的正則表示式。這個引數可以匹配更高階的正則用法,具體也沒搞不太清楚-n
顯示行號-A num
顯示配合結果後面的num
行內容(After)-B num
顯示配合結果前面的num
行內容(Before)-C num
顯示配合結果上面和下面各num
行內容(Context)-l
多檔案搜尋時,加入此引數的話,只顯示匹配內容的檔名--no-filename
多檔案搜尋時,預設情況下會顯示出匹配到的每一行內容以及所在的檔名。加入此引數後,將不顯示匹配內容所在的檔名。