grep命令的使用,grep命令使用
grep是UNIX和LINUX中使用最廣泛的命令之一。grep允許對文字檔進行模式尋找。如果找到匹配模式, grep列印包含模式的所有行。grep支援基本Regex,也支援其擴充集。grep有三種變形,即:
grep:標準grep命令,這裡主要討論此格式;
Egrep:等同於grep -E,擴充grep,支援基本及擴充的Regex;
Fgrep:等同於grep -F,不支援Regex,允許尋找字串而不是一個模式。
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的用法.
http://hovertree.com/menu/linux/
3. 找出目錄下最新的滿足"target_數字"格式的目錄
解決辦法: 使用grep -e當然使用-E也可以。
完整命令為:
ls PATH --sort=time | grep -e resource_\d* | head -1
使用ls的選項--sort=time時間排序排列,而head即是擷取命中的第一部分。
推薦:http://www.cnblogs.com/roucheng/p/3470287.html