1.基本語法
grep [option] pattern file
grep [-acinv] [--color=auto] 'key' filename
1) 參數選項:
-n 結果顯示行號
-c 關鍵字匹配的行次數
-i 關鍵字忽略大小寫
-v 反向選擇
-e 後跟一個正則表達式
-m10 查找到10次就停止繼續查找
-A10 顯示關鍵字所在行和後10行
-B10 顯示關鍵字所在行和前10行
-C10 顯示關鍵字所在行和前後10行
--color=auto 關鍵字高亮顯示(多個參數一起使用,color屬性需要放最後,注意是兩個短線)
2) grep 可以跟正則,詳細信息
grep -n t[ea]st info.log 查詢test或者tast ([]一個字符)
grep -n [^g]oo 查詢oo但不包含goo的行 (^在[]內表示反向選擇)
grep -n [^a-z]oo 查詢oo但不包含小寫字母+oo的行 ([a-z] 一個小寫字母)
grep -n [0-9] 查詢包含數字的行 ([0-9] 一個數字)
grep -n ^the 查詢the開頭的行 (^不在[]內表示定位到行首)
grep -n ^[^a-zA-Z] 查詢不是以字母開頭的行 (^反向和定位)
grep -n \.$ 查詢以.結尾的行 (\轉義 $結尾)
grep -n ^$ 找出空白行 (^$ 空白行)
grep -n g..d 查詢g??d的字符串的行(.表示一個)
grep -n ooo* 查詢至少包含兩個oo的行(* 表示重複前邊一個字符0-n次)
grep -n goo*g 查詢g開頭g結尾且中間至少包含一個o的行
grep -n g.*g 查詢g開頭g結尾且中間字符可有可無的行 (.*表示沒有或有任意個字符)
grep -n o\{2\} 查詢oo的行({2} 前邊字符重複2次,{}轉義)
2.多關鍵字grep
1) 多條件或
grep -E '關鍵字1|關鍵字2|關鍵字3' info.log
匹配關鍵字1或關鍵字2或關鍵字3到任意一個,展示該行
2) 多條件組合交集
grep '關鍵字1' info.log | grep '關鍵字2' | grep '關鍵字3'
匹配到關鍵字1和關鍵字2和關鍵字3全部,展示該行
3.多文件grep
1) 當前目錄下grep文件
grep 'key' test1.txt test2.txt
2) 當前目錄下grep文件夾以及文件夾下所有文件(遞歸)
grep -r 'key' /ss/*
4.demo
實例1:查找進程
ps -ef | grep svn
實例2:查找指定進程個數
ps -ef | grep svn -c 或者 ps -ef | grep -c svn
實例3:從文件中讀取關鍵字進行搜索
cat test.txt | grep -f test2.txt
實例5:從文件中查找關鍵詞,並且對關鍵字加上顏色顯示
grep 'test' --color test.txt
grep -nf -C5 'CN_YAG1004' /*info.log
實例6:從多個文件中查找關鍵詞
grep 'test' test1.txt test2.txt
實例7:找出以g開頭的行內容
cat test.txt | grep ^u
實例8:輸出非u開頭的行內容
cat test.txt | grep ^[^u]
實例9:輸出以hat結尾的行內容
cat test.txt | grep hat$
實例10:顯示包含9或者nine字符的內容行
cat test.txt | grep -E '9|nine'