grep 命令各參數詳解帶例子

在工作中經常用到grep命令,在此做一下總結。
grep 用於匹配文件中符合條件的行。

用於測試的文本

> cat test.txt
aaaa
bbbbb
cccc
dddd
eeeeeee
ffff

各個選項

-A

-- after-context : 除了打印匹配的行,還要打印匹配行之後的幾行內容;

例如: 除了匹配“bb” ,還要知道該行的後三行內容。

> grep -A 3 "bb" test.txt
bbbbb
cccc
dddd
eeeeeee

-a

 --text : 把所有的文件都當作ASCII文件。用人話就是說我們在匹配二進制文件時,如果匹配到內容就會打印"Binary file ...
         matches'', 使用這個選項 就會把匹配的內容打印出來。

-B

--before-context: 與-A相關,是除了打印匹配的行,還要打印匹配行之前的幾行內容;

例如 : 除了匹配 “cc”, 還要知道該行的前三行內容。

> cat test.txt
aaaa
bbbbb
cccc

-b

--byte-offset : 打印匹配行之前,打印出匹配行第一個字符的偏移量。注意: 每行最後的回車換行也是算上的。

例如:我們要匹配 “bb”, 並想知道 “bb” 這一行的行首字符的偏移量。

> grep -b "c" test.txt
5:bbbbb

從而我們可以知道,行首字符b 偏移量是 5。

-C

--context:  打印匹配行,前後各打印幾行, 如果-C 2 則是等於 -A 2 -B 2;

例如: 我要匹配字符串 “cc” , 除此之外,還要打印前後的2行;

> grep -C 2 "cc" test.txt
aaaa
bbbbb
cccc
dddd
eeeeeee

-c

--count : 打印一共匹配了多少行

-D

--device: 對設備,FIFO,管道等文件設備 進行 read,skip 。特別注意,這樣會將fifo的數據讀取出來。

例如。我們創建一個fifo文件,並匹配其中的 “aa” ;

# 創建fifo
> mkfifo fifo_test
# 匹配 “aa”
> grep -D read "aa" fifo_test
# 開另一個終端
> cat aa > fifo_test

-d

--directories :針對目錄的一些操作 
1. read 將目錄當作普通文件
2. recurse:遞歸遍歷,效果等同於-R 和 -r
3.  skip : 忽略目錄   

-E

--extended-regexp : 等效於 egrep, 將pattern 當作擴展正則表達式;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章