1.列印模式匹配所位於的字元或位元組偏移:
echo gnu is not unix | grep -b -o 「not」
7:not #一行中字串的字元偏移是從該行的第乙個字,符開始計算,起始值是0。在上面的例子中,"not"的偏移值是7(也就是說,not是從該行的第7個字元開始的,即「gnu is not unix」這一行)。
選項-b總是和-o配合使用。
2.搜尋多個檔案並找出匹配文字位於哪乙個檔案中:
grep -l linux sample1.txt sample2.txt sample3.txt sample4.txt
sample1.txt
sample2.txt
和-l相反的選項是-l,它會返回乙個不匹配的檔案列表。
3.遞迴搜尋檔案
grep 「text」 . -r -n #命令中的「.」指定了當前目錄。grep的選項-r和-r功能一樣。
4.忽略樣式中的大小寫選項-i
echo hello world | grep -i 「hello」
hello
5.匹配多個樣式
在進行匹配的時候通常只指定乙個樣式。然而,我們可以用選項-e來指定多個匹配樣式:
grep -e 「pattern1」 -e 「pattern」
例如:echo this is a line of text | grep -e 「this」 -e 「line」 -o
this
line
還有另一種方法也可以指定多個樣式。我們可以提供乙個樣式檔案用於讀採樣式。在樣式檔案中逐行寫下需要匹配的樣式,然後用選項-f執行
grep:grep -f pattern_filesource_filename例如:
cat pat_file
hello
cool
echo hello this is cool | grep -f pat_file
hello
this is cool
6.在grep搜尋中指定或排除檔案
grep可以在搜尋過程中指定(include)或排除(exclude)某些檔案。我們通過萬用字元來指定所include檔案或exclude檔案。
grep 「main()」 . -r --include *.
注意,some會擴充套件成somestring1 somestring2 somestring3。
grep 「main()」 . -r --exclude 「readme」
如果需要排除目錄,可以使用–exclude-dir選項。如果需要從檔案中讀取所需排除的檔案列表,使用–exclude-from file。
7.使用0值位元組作為字尾的grep與xargs
xargs命令通常用於將檔名列表作為命令列 xargs命令通常用於將檔名列表作為命令列引數提供給其他命令。當檔名用作命令列引數時,建議用0值位元組作為檔名終止符,而非空格。因為一些檔名中會包含空格字元,一旦它被誤解為終結符,那麼單個檔名就會被認為是兩個檔名(例如,new file.txt被解析成new和file.txt兩個檔名)。這個問題可以利用0值位元組字尾來避免。我們使用xargs以便從諸如grep、find中接收stdin文字。這些命令可以將帶有0值位元組字尾的文字輸出到stdout。為了指明輸入的檔名是以0值位元組(\0)作為終止符,需要在xargs中使用-0。 echo 「test」 > file1 echo 「cool」 > file2 echo 「test」 > file3 在下面的命令序列中,grep使用-z選項輸出以0值位元組作為終結符的檔名(\0)。xargs -0讀取輸入並用0值位元組終結符分隔檔名: grep 「test」 file* -lz | xargs -0 rm
8.列印出匹配文字之前或之後的行
基於上下文的列印是grep的特色之一。假設已經找到了給定文字的匹配行,通常情況下grep只會列印出這一行。但我們也許需要匹配行之前或之後的n行,也可能兩者皆要。這可以在grep中用前後行控制選項來實現。來看看具體的做法。 要列印匹配某個結果之後的3行,使用-a選項: seq 10 | grep 5 -a 3 5 6 7 要列印匹配某個結果之前的3行,使用-b選項: seq 10 | grep 5 -b 3 2 3 4 5 要列印匹配某個結果之前以及之後的3行,使用-c選項: seq 10 | grep 5 -c 3 2 3 4 5 6 7 8 如果有多個匹配,那麼使用–作為各部分之間的定界符 : echo -e 「a\nb\nc\na\nb\nc」 | grep a -a 1 ab – ab
Linux grep命令用法
語法 grep options pattern file.grep用以在file內文中比對相對應的部分,或是當沒有指定檔案時,由標準輸入中去比對。在預設的情況下,grep會將符合樣式的那一行列出。此外,還有兩個程式是grep的變化型,egrep及fgrep。其中egrep就等同於grep e fgr...
linux grep用法大全
原文 在unix中經常會用到grep去選取所需要的資訊,用好grep有時可以到達意想不到的效果。grep g globally search for a re regular expression r r and p print the results.1 引數 i 忽略大小寫 c 列印匹配的行數 ...
學習 Linux grep用法
grep global search regular expression re and print out the line,全面搜尋正規表示式並把行列印出來 root www grep acinv color auto 搜尋字串 filename 選項與引數 a 將 binary 檔案以 tex...