shell文字處理三劍客 grep

2021-09-09 05:48:03 字數 3390 閱讀 4482

global search regular expression and print out the line

全面搜尋研究正規表示式並顯示出來

grep命令是一種強大的文字搜尋工具,根據使用者指定的「模式」對目標文字進行匹配檢查,列印匹配到的行,由正規表示式或者字元及基本文字字元所編寫的過濾條件

1、在stdin(標準輸入)中搜尋匹配特定模式的行

2、在檔案中搜尋匹配模式的文字行

grep linux textfile 或者 grep 「linux」 textfile

3、在多個檔案中搜尋匹配特定模式的文字行

4、選項–color可以在輸出行中著重標記出匹配到的模式,儘管該選項在命令列中的放置位置沒有強制要求,不過慣常作為第乙個選項出現。

5、grep命令預設使用基礎正規表示式。這是先前描述的正規表示式的乙個子集。選項-e可以grep使用擴充套件正規表示式。也可以使用預設啟用擴充套件正規表示式的egrep命令。

正規表示式的擴充套件規範和基本規範基本相同。只是在基本規範,有些字元(? + {} | ())應解釋為普通字元,要表達上述特殊含義,則需要加入\轉義。反之,在擴充套件模式下,? + {} | () 應被理解成特殊含義,要取其字面值,也要對其進行\轉義。所以,grep工具帶上-e選項,表示使用擴充套件正則來進行匹配,如果沒有,則表示使用基本正則進行匹配

grep -e 「[a-z]+」 filename 或 egrep 「[a-z]+」 filename

6、選項-o可以只輸出匹配到的文字

7、選項-v可以列印出不匹配match_pattern的所有行

grep -v match_pattern file

選項-v能夠反轉(invert)匹配結果

8、選項-c能夠統計出匹配模式的文字行數

需要注意的是-c是統計匹配行的數量,並不是匹配的次數,例如:

儘管有6個匹配項,但grep命令只輸出2,因為只有兩個匹配行,在單行出現的多次匹配只被計為一次

9、要統計檔案中匹配項的數量,可以使用以下技巧

10、選項-n可以列印出匹配字串所在行的行號

grep linux -n case.txt

或者 cat case.txt | grep linux -n

如果涉及多個檔案,該選項也會輸出結果列印出檔名

grep linux -n case.txt case1.txt

11、選項-b可以列印出匹配出在行中的偏移。配合選項-o可以列印出匹配所在的字元或位元組偏移

echo gnu is not unix | grep -b -o not

字元在行中的偏移是從0開始計數,不是1

12、選項-l可以列出匹配模式所在的檔案

grep -l linux case.txt case1.txt

和-l效果相反的選項是-l,它會返回乙個不匹配的檔案列表

5、grep的靜默輸出

有時候,我們並不打算檢視匹配的字串,而只是想知道是否能夠成功匹配,這可以通過設定grep的靜默選項-q來實現。在靜默模式中,grep命令不會輸出任何內容,他僅是執行命令,然後根據命令執行成功與否返回退出狀態,0表示匹配成功,非0表示匹配失敗

下面這個指令碼利用grep的靜默模式來測試檔案中是否有匹配文字

if [ $# -ne 2 ]; then

echo "usage: $0 match_text filename"

exit 1

fimatch_text=$1

filename=$2

grep -i -q "$match_text" $filename

if [ $? -eq 0 ]; then

echo "the text exists in the file!"

else

echo "text does not exists in the file!"

fi

執行指令碼:

./silent_grep.sh student student_data.txt

6、列印出匹配文字之前或之後的行

基於上下文的列印是grep的乙個挺不錯的特性,當grep找到了匹配模式的行時,它只會列印這一行,但我們也需要匹配行之前或者之後的n行。這可以通過控制選項-b和-a來實現

選項-a可以列印匹配結果之後的行

seq 10 | grep 5 -a 3

選項-b可以列印匹配結果之前的行

選項-a和-b可以結合使用,也可以直接使用-c,分別列印出匹配結果之前及之後的n行

seq 10 | grep 5 -a 3 -b 3或者 seq 10 | grep 5 -c 3

如果有多個匹配,那麼使用–作為各部分之間的分隔

echo -e 「a\nb\nc\na\nb\nc」 | grep a -a 1

文字處理三劍客

文字處理三劍客 劍客一 grep 作用 行 過濾 用法 grep 正規表示式 檔案 路徑 grep e 擴充套件類正規表示式 檔案 路徑 劍客二 sed 用法 sed 選項 位址定位sed命令 檔案 路徑 sed 選項 正規表示式 sed命令 檔案 路徑 sed 選項 位址定位 正規表示式 sed命...

Shell文字處理三劍客 grep sed awk

grep sed awk我們叫他們三劍客,掌握它們可以更好的運維,提公升工作效率,即使不是運維,對我們處理資料都是非常方便的 就很多資料處理來講,寫程式肯定是也能處理的,但是遠沒有已經存在特定功能的命令更高效,我們只需要操作命令即可。grep 簡介 grep常用的引數 usage grep abcd...

Linux文字處理三劍客

grep 作用 文字搜尋工具,根據使用者指定的 模式對目標檔案逐步進行匹配檢查,列印匹配到的行 grep root etc passwd grep命令選項 grep user etc passwd v 顯示不被pattern 匹配的行 e 僅顯示匹配到的字串 grep user etc passwd...