SHELL grep搜尋文字

2021-09-17 07:08:02 字數 2352 閱讀 9766

(1).  $ grep "pattern" filename

(2).  從stdin中讀取

[root@master1 test]# echo -e "this is a word\nnext line" | grep word

this is a word

(3).  單個grep對多個檔案進行搜尋

$ grep "match_text" file1 file2 file3...

(4). --color 在輸出中著重標出匹配到的單詞

$ grep word filename --color=auto

(5). grep使用正規表示式,需要新增-e選項或者使用egrep

$ grep -e "[a-z]+" filename

或者$ egrep "[a-z]+" filename 

(6). -o  只輸出匹配到的文字

$ echo "this is a line." | egrep -o "[a-z]+\."

line.                ## \. 匹配字元"."

(7). -v 列印包含match_pattern之外的所有行

$ grep -v match_pattern filename

(8). -c 統計檔案或文字中包含匹配字串的行數,並不是匹配的次數。

$ echo -e "1 2 3 4\nhello\n5 6" | egrep -c "[0-9]" 

2(9). 要統計匹配項的數量,可以使用下面的方式

$ echo -e "1 2 3 4\nhello\n5 6" | egrep -o "[0-9]" | wc -l

(10). -n 列印出包含匹配字串的行數

$ grep -n "pattern"  filename

如果涉及多個檔案,也會隨著輸出檔名

$ grep linux -n sample1.txt sample2.txt 

sample1.txt:2:linux is fun 

sample2.txt:2:planetlinux 

(11). -b -o  列印匹配字串位於的字元或位元組偏移

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

7:not  

從第乙個字元算起,起始值為0。not的偏移值是7,也就是說not是從第8個字元開始的。

(12). -l 搜尋多個檔案並找出匹配文字位於哪個檔案中

$ grep -l linux sample1.txt sample2.txt 

sample1.txt 

sample2.txt 

1.遞迴搜尋檔案

在多級目錄中對文字進行遞迴搜尋:

$ grep "text" . -r -n          ##命令中的「.」 指定了當前目錄

例:$ cd src_dir 

$ grep "test_function()" . -r -n 

./miscutils/test.c:16:test_function();

test_function()位於miscutils/test.c的第16行 

2. -i 忽略樣式中的大小寫

$ echo hello world | grep -i "hello" 

hello 

3. 用grep匹配多個樣式

$ grep -e "pattern1" -e "pattern2" 

例: $ echo this is a line of text | grep -e "this" -e "line" -o 

this 

line 

4. 在grep搜尋中指定(include)或排除(exclude)檔案

目錄中遞迴搜尋所有.c和.cpp檔案

$ grep "text" . -r --include *.

搜尋中排除所有的readme檔案

$ grep "text" . -r --exclude "readme"

5. 列印匹配文字之前或之後的行

要列印匹配某個結果之後的3行,使用 -a選項:

$ seq 10 | grep 5 -a 3 

5 6 

7 8 

要列印匹配某個結果之前的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 

shell grep文字搜尋

grep語法 grep option string to find filename 選項與引數 1 i 忽略搜尋字串的大小寫 2 v 取反,即輸出不匹配的那些文字行 3 n 輸出行號 4 l 輸出能夠匹配模式的檔名,相反的選項為 l 5 q 靜默輸出 6 w 精準匹配 根據實際需求進行選擇即可 s...

shell grep字元查詢,新增命令

例項一 在當前目錄下test.html中查詢以 pdf 結尾的行,並將結果輸出到test.txt檔案中 more test.html grep pdf test.txt 例項二 參考 1 顯示當前目錄下test.txt所有行 2 顯示test.txt中以 c 開頭的行 more test.txt g...

shell grep命令及常見用法

背景 grep的全稱是global regular expression print,是linux中最強大的文字搜尋命令之一,常用於搜尋文字檔案中是否含有某些特定模式的字串。該命令以行為單位讀取文字並使用正規表示式進行匹配,匹配成功後列印出該行文字。命令格式 grep option string t...