Linux 三劍客(1)- grep


作用

在文件或標准輸入中,通過正則表達式查找對應的內容

 

語法格式

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

 

待補充


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM