作用
在文件或標准輸入中,通過正則表達式查找對應的內容
語法格式
grep [選項]... PATTERN [FILE]...
grep的常用選項參數
參數選項 | 描述 |
-G | 默認值 |
-F | 相當於使用fgrep,但必須用 -F |
-E | 相當於使用egrep,但必須用 -E |
-V | 打印 grep 的版本號 |
-E 的栗子
前提
當 grep 想同時過濾多個條件或操作
錯誤寫法
默認不支持多條件匹配
ps -ef | grep "java|tomcat"
正確寫法
ps -ef | grep -E "java|tomcat"
匹配控制選項參數
參數選項 | 描述 |
-e | PATTERN 來進行匹配操作 |
-f | 從文件中取得 PATTERN |
-i | 忽略大小寫 |
-v | 反轉匹配,選擇沒有被匹配到的內容 |
-w | 匹配整詞,精確地單詞,單詞的兩邊必須是非字符符號(即不能是字母數字或下划線) |
-x | 僅選擇與整行完全匹配的匹配項 |
--line-buffered | 有一個文件是動態的,它不斷地添加信息到文件的尾部,而你想要輸出包含某些信息的行。即持續的grep一個動態的流 |
-e 的栗子
當你有多個正則表達式想同時匹配時,可以用 -e,一個 -e 接一個正則表達式,它們是或的關系,不是與的關系
-f 的栗子
-i 的栗子
-v 的栗子
-w 的栗子
-x 的栗子
一般輸出控制選
參數選項 | 描述 |
-s | 禁止顯示錯誤信息 |
-q | 安靜模式,不會有任何輸出內容,查找到匹配內容會返回0,未查找到匹配內容就返回非0 |
-m num | 匹配 num 次后停止 |
-c | 匹配成功數量 |
-l | 列出匹配成功結果的文件來源(標准輸入或文件名稱) |
-H | 給每一個匹配結果打印來源(標准輸入、文件名) |
-q
目前沒發現有什么用
-m 的栗子
-c 的栗子
-l 的栗子
ls 輸出的內容就是標准輸入
輸出控制參數講解
參數選項 | 描述 |
-b | 輸出的同時打印字節偏移 |
-n | 輸出的同時打印行號 |
-H | 給每一個匹配結果打印來源(標准輸入、文件名) |
-h | 輸出是不顯示來源(默認) |
-o | 只顯示匹配 PATTERN 的部分 |
-b 的栗子
-n 的栗子
-H 的栗子
因為結果都來源於 ls 的標准輸入,所以顯示標准輸入,如果是來源於某個文件則會顯示文件名
-o 的栗子
上下文線控制選項
參數選項 | 描述 |
-A num | 匹配到搜索到的行以及該行下面的num行 |
-B num | 匹配到搜索到的行以及該行上面的num行 |
-C num | 匹配到搜索到的行以及上下各num行 |
備注
感覺就是為了好看而已
-A 的栗子
-B 的栗子
-C 的栗子
文件和目錄選項
參數選項 | 描述 |
-a | 不忽略二進制的數據 |
-d | 當要查找的是目錄而非文件時,必須使用這項參數 |
-r | 以遞歸方式讀取每個目錄下的所有文件; 這相當於-d recurse選項。 |
-r 的栗子
巨常用的語法
重點
寫的正則表達式最好用 '' 包起來,當碰到需要轉義符的時候才會生效
查找指定進程
ps -ef | grep java
查找指定進程並統計數量
ps -ef | grep -c java
從文件中查找關鍵字
grep src test.txt
從文件中查找關鍵字並輸出它的行號
grep -n src test.txt
從多個文件中查找關鍵字
grep src src.txt src1.txt src2.txt
從文件中查找關鍵字后,再從結果中找到指定關鍵字
cat src.txt | grep -v s | grep -w lib
找出文件中的空白行
grep -n ^$ test.txt
顯示當前目錄下面以 .txt 結尾的文件中的所有包含每個字符串至少有4個連續小寫字符的字符串的行
grep -n '[a-z]\{4\}' *.txt
待補充