grep命令的使用

2022-03-27 18:53:14 字數 1254 閱讀 4515

grep是unix和linux中使用最廣泛的命令之一。grep允許對文字檔案進行模式查詢。如果找到匹配模式, grep列印包含模式的所有行。grep支援基本正規表示式,也支援其擴充套件集。grep有三種變形,即:

grep:標準grep命令,這裡主要討論此格式;

egrep:等同於grep -e,擴充套件grep,支援基本及擴充套件的正規表示式;

fgrep:等同於grep -f,不支援正規表示式,允許查詢字串而不是乙個模式。

grep有很多選項可供使用,有問題找「男人」,會有詳細說明,我這裡只是說說我所使用到的,最近需要寫一些shell指令碼,在這過程中有用到grep命令。下面就是幾種使用場景:

1.  查詢a目錄下所有檔案中特定內容是否在b目錄下對應檔案中存在

解決辦法:借助grep把a目錄下每個檔案裡特定內容輸出到另外乙個檔案中,b目錄同樣處理,使用命令:

grep  "define" filea > lista

grep  "define" filea > listb

因為define後面的部分內容不一樣,我們的目的是找出類似define("test_a","testa");格式而檔案沒有test_a的部分,當然裡面有很多不同的define語句。如果使用diff命令來對比的話難以應付,所以可以使用windows下的beyondcompare工具進行人工比對,不同的內容會標紅一目了然,那麼至少在逗號前面相同部分是不會標紅的,關於這個工具還有更多的用處,感興趣的可以搜尋一下。

2.  要對某目錄下除了個別檔案外的所有內容打包壓縮

解決辦法:使用grep -v注意是小寫的v,意為不包含匹配的行,而大寫的v意為版本。

完整命令可以寫為:

ls path | grep -v '.log' | grep -v '.tar.gz' > tar.list

目的把需要打包的檔案及目錄名(排除.log及.tar.gz字尾名檔案)寫入tar.list

第二步即進行打包操作:

cat tar.list | xargs tar -zcvf target.tar.gz

把cat出的結果作為引數傳入管道後面執行打包命令,這也是xargs的用法.

3.  找出目錄下最新的滿足"target_數字"格式的目錄

解決辦法: 使用grep -e當然使用-e也可以。

完整命令為:

ls path --sort=time | grep -e  resource_\d* | head -1

使用ls的選項--sort=time時間排序排列,而head即是獲取命中的第一部分。

推薦:

grep命令的使用

grep命令 options主要引數 c 只輸出匹配行的計數。i 不區分大 小寫 只適用於單字元 h 查詢多檔案時不顯示檔名。l 查詢多檔案時只輸出包含匹配字元的檔名。n 顯示匹配行及 行號。s 不顯示不存在或無匹配文字的錯誤資訊。v 顯示不包含匹配文字的所有行。pattern正規表示式主要引數 忽...

Grep命令使用

1.grep簡介 grep的工作方式是這樣的,它在乙個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到螢幕,不影響原檔案內容。grep可用於shell指令碼,因為grep通過返回乙個狀態值來說明搜尋的狀態,如果模板搜尋成功,則返回0,如果搜尋不成...

grep命令使用

目錄 極簡用法 引數含義 應用舉例 更多用法 grep pattern filename cat filename grep pattern匹配出包含pattern字串的相應行,pattern上也可以加雙引號。引數引數含義 補充說明 b給出匹配字串的在該行的字元偏移量 與 o合用 c給出匹配的行行數...