shell 正規表示式 grep

2021-10-03 14:59:07 字數 3757 閱讀 3740

grep 『c*』 /etc/passwd

grep 『c\+』 /etc/passwd

egrep 『c+』 /etc/passwd

在vim下面用 :%s/***/aaa/ 可將所有字串***替換為aaa

/^$/找的是空行,包括回車

最好用egrep而且搜尋的正規表示式要加雙引號或單引號,最好是雙引號

基本正規表示式原字元

元字元功能示例說明^

行首定位符

^love

以l開頭且後面跟ove的行

$行尾定位符

love$

.匹配單個字元

l…e匹配l和e之間有兩個任意字元的字串

*匹配前導符0到多次

ab*love

匹配如alove,ablove,abbbbblove

.*任意多個字元

匹配指定範圍內的乙個字元

[ll]ove

匹配love或love

[ - ]

匹配指定範圍內的乙個字元

[a-z0-9]ove

小寫a-z和0-9中任意乙個在加ove

[^]匹配不在指定組內的字元

[^a-z0-9]ove

\用來轉義元字元

love\.

這裡把.轉義為了原始的標點符號

\<

詞首定位符

\\>

詞尾定位符

love\>

\(..\)

匹配稍後使用的字元的標籤

:% s/172.16.130.1/172.16.130.5/

可簡化為

:% s/\(172.16.130.\)1/\15/

也可寫成:

% s/\(172.\)\(16.\)\(130.\)1/\1\2\35/

將文字內容172.16.130.1轉化為172.16.130.5 第二個的\1相當於第乙個括號裡的內容

x\字元x重複出現m次

o\x\

字元x重複出現m次以上

o\x\

字元x重複出現m到n次

o\擴充套件正規表示式元字元這裡應該是一定要用egrep的

元字元功能

示例說明

+匹配乙個或多個前導字元

[a+z]+ove

a-z中至少匹配乙個

?匹配乙個或0個前導字元

lo?ve

a|b匹配a或b

love|hate

()組字元

love(able|rs)ov+ ov+ (ov)+

ov+是v重複乙個或多個(ov)+是重複ov乙個或多個ovovovo…

(..)(..)\1\2

標籤匹配字元

(love)able\1er

\1相當於love

x字元x重複m次ox

字元x重複至少m次ox

字元x重複m到n次

oposix字元類

元字元功能示例

說明[:alnum:]

字母與數字字元

[[:alnum]]+

例項是匹配乙個或多個字母或數字的

[:alpha:]

字母字元(包括大小寫字母)

[[:alpha] ]

[:blank:]

空格與製表符

[[:blank:]]

[:digit:]

數字字母

[[:digit:]]?

[:lower:]

小寫字母

[[:lower:]]

[:upper:]

大寫字母

[[:upper:]]+

[:punct:]

標點符號

[[:punct:]]

[:space:]

包括換行符,回車等在內的所有空白

[[:space:]]+

/love/

/^love/

/love$/

/l.ve/

/lo*ve/

/[ll]ove/

/love[a-z]

/love[^a-za-z0-9]/

/.*

//^$/

/^[a-z]

..$/

/^[a-z]

[a-z]

*3[0-5]//

[a-z]

*\./

/^ *

[a-z]

[a-z]

[a-z]$/注意這是匹配開頭有或者沒有空格的

/^[a-za-z]

*[^,

][a-za-z]

*$//\/

/\.*th\>/

/52\./空行

/^$/

/^[\t]

*$/注釋行

/^#/

/^[\t]

*#/

grep

egrep

fgrep

grep選項 選項

完整選項

意義例子

-i- -ignore-case

忽略大小寫

-l- -files-with-matches

只列出匹配行所在的檔名

-n- -line-number

在每一行前面加上它在檔案中的相對行號

-c- -count

顯示成功匹配的行數

-s–no-message

禁止顯示檔案不存在或者檔案不可讀的錯誤資訊

-q- -quiet,- -silent

靜默,會列印出命令返回值

-v- -invert-match

反向查詢,只顯示不匹配的行

-r,-r

- -recursive

遞迴查詢針對目錄

grep -r 『aa』 /file 目錄

egrep 『aa』 /file/*遞迴查詢檔案

- -color

顏色-o

- -only-matching

只顯示匹配的內容(預設情況也就是選項為空的情況是顯示匹配的行的所有內容的)

-b- -before-context=num

print num lines of leading context

-b2顯示所在行前面兩行

-a- -after-context=num

print num lines of trailing context

-a2顯示所在行後面兩行

-c- -context=num

print num lines of output context

-c2 顯示所在行前後兩行

命令格式

grep [選項] pattern filename1 filename2。。其中pattern 表示正規表示式的模式(就是正規表示式)filename是要對pattern 進行查詢的檔案

可用man grep檢視使用文件或者grep help

grep -e相當於egrep

grep '-v』這樣的話系統會把-v看成是選項而不是模式應該這樣grep 『-v』

ps:元字元作用或等價於

\w(word)所有字母與數字,相當於字元[a-za-z0-9]

『l[a-za-z0-9]*ve』 等價於 『\w*ve』

\w所有字母與數字之外的字元,稱為非字元

'love[^a-za-z0-9]+『等價於』love\w+』

\b詞邊界

『『等價於』\blove\b』

grep正規表示式

grep的工作方式是這樣的,它在乙個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到螢幕,不影響原檔案內容。grep可用於shell指令碼,因為grep通過返回乙個狀態值來說明搜尋的狀態,如果模板搜尋成功,則返回0,如果搜尋不成功,則返回1,如果...

Grep正規表示式

grep正規表示式 要用好grep這個工具,其實就是要寫好正規表示式,所以這裡不對grep的所有功能進行例項講解,只列幾個例子,講解乙個正規表示式的寫法。ls l grep a 通過管道過濾ls l輸出的內容,只顯示以a開頭的行。grep test d 顯示所有以d開頭的檔案中包含test的行。gr...

grep正規表示式

文字查詢需要grep global research 根據模式,搜尋文字,並將符合模式的文字行顯示出來。pattern 文字字元和正規表示式的元字元組合而成的匹配條件 man grep 檢視幫助 查詢 etc passwd檔案包含root的內容 root iz233y80y23z grep root...