1. 程式人生 > >grep用法小結

grep用法小結

用法

grep [OPTIONS] PATTERN  [FILE...]
grep [OPTIONS] -e PATTERN ... [FILE...]
grep [OPTIONS] -f FILE ... [FILE...]

grep在檔案中查詢匹配正則表示式的內容,預設打印出匹配的一行

選項

-E 支援擴充套件正則表示式
-F 把PATTERN解析成簡單的字串,而不是正則表示式
-G 只支援基礎正則表示式,這是預設選項
-P 支援perl正則表示式

使用檔案grp.txt為演示

$ cat grp.txt 
{"id":1, "username": "
jack", "email": "[email protected]"} {"res":[2,1,5,7]} baidu in beijing didi in beijing ali in hangzhou tencent in shenzhen huawei in shenzhen

-e PATTERN, 使用-e選項可以匹配多個條件

-f FILE, 從檔案中獲取PATTERN
-i 忽略大小寫
-v 反向匹配,只選擇未匹配的

-w 匹配整個單詞
-x 匹配整行

可以看到 -x 選項和 grep  '^h.*en$' grp.txt 等價

-c 不列印結果,只打印匹配到的行數


--color 匹配到的表示式高亮顯示
-L 打印出未匹配的檔案列表
-l 打印出匹配的檔案列表
-m 指定最大匹配行數

-o 只打印匹配到的字串,而不是列印一整行


-q 不列印結果,但是我們可以根據$?來判斷是否有匹配到,在指令碼中常用
-s 不列印錯誤結果(檔案不存在、不可讀檔案)

 

-b  列印本行在檔案中的位元組偏移量

-H 列印匹配的檔名。當有多個檔案匹配到的時候,這個是預設選項

-h 不列印檔名

-n 輸出行號

--label 顯示輸入的時候用到,讓標準輸入STDIN的顯示像從檔案中讀取的一樣

-T 輸出按照tab縮排

-Z 在檔名後輸出 zero byte, 也就是啥都不輸出

 

-A NUM 在匹配行後面再輸出 NUM 行內容

-B NUM 在匹配行前面再輸出 NUM 行內容

-C NUM 在匹配行前後各輸出 NUM 行內容

 

--exclude=GLOB

--exclude-from=FILE 

--exclude-dir=GLOB

這三個是跳過檔案或目錄

--include=GLOB 只處理匹配 GLOB 的檔案