bash正規表示式

2022-06-11 23:36:15 字數 4050 閱讀 6725

星號*:

匹配它前面的字串或正規表示式任意次(包括0次)。

比如:1122*可能匹配的字串有:

112、1122、1122222、1123131231 ......

句號.:

匹配除換行符之外的任意乙個字元。

比如:"

112.

",將匹配112+至少乙個字元

可能匹配的字串有:

1121、1122、112abc、1123131231 ......,但不匹配112

插入符號^:

匹配一行的開始,但有時依賴於上下文環境,可能表示否定正規表示式中乙個字串的意思。

比如:「^abc」只匹配行首為abc的字串

美元符$:

在乙個正規表示式的末尾,匹配一行的結尾。

比如:"

123$

",將只能匹配到行尾為123的字元行,"

^$"匹配匹配乙個空行。

方括號:

匹配方括號內指定的字母集中的乙個字元。

比如:"

[abc]

",將匹配字元a、b、c中的任意乙個字元;而"

[^abc]

",將匹配除abc之外的所有字元。

反斜線符號\:

轉義乙個特殊的字元,使這個字元得到字面意義的解釋。

比如:"

\$",將表示它的原意"

$";"

\\",表示"

\"。

轉義尖括號\<\>:

用於標記單詞邊界。尖括號必須是轉義的,否則它們只是字元的字面含義。

比如:"

\"匹配"

the",但不匹配"

them

","there

"。

問號?:

匹配0個或1個前面的字元,用於匹配單個字元。

比如:"

ab?c

",將匹配"

ac"或"

abc"。

加號+:

匹配乙個或多個前面的字元,它和星號*很相似,單它不匹配0個字元的情況。

比如:"

ab+c

"將匹配"

abc","

abbc

","abbb...c

"等。

轉義波形括號\:

指示匹配前面正規表示式的次數。波形括號必須是轉義的,否則只有字元的字面含義。

比如:"

[0-9]\

"將匹配5位數字。

圓括號():

包含一組正規表示式。與"

|"或expr操作符一起使用。

豎線|:

正規表示式的"或"

操作符匹配一組可選的字元。

比如:"

a(b|c)d

"將匹配"

abd"或"

acd"。

正規表示式比較操作符:

[weblogic@etpmalldev6 logs]$ digit=132

[weblogic@etpmalldev6 logs]$ [[ $digit =~ [0-9

] ]]

[weblogic@etpmalldev6 logs]$ echo $?

0[weblogic@etpmalldev6 logs]$ digit="

sfsfs

"[weblogic@etpmalldev6 logs]$ [[ $digit =~ [0-9

] ]]

[weblogic@etpmalldev6 logs]$ echo $?

1

例項:測試資料:

[weblogic@etp-mall-dev7][/tpdata/shell_script]$ cat list.txt 

1122

11211222

2211

22111

1122222112

3131231112112

abdde

abede

bbcdefss

bbdde

the people

's replublic of china

fafslk;kfak

fdoutjjlsjpwkfks

fasfsafsafsfsaf

fsafsfaffs

abdabeccde

查詢包含字串"112"且其後至少有乙個字元的行:

[weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "

112.

"list.txt

1122

11222

1122222112

3131231112112

查詢字元"d"和"e"之間有乙個任意字元的行:

[weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "

d.e"

list.txt

abdde

bbdde

查詢在字元"2"後有兩個任意字元的行:

[weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "

2.."

list.txt

11222

2211

22111

1122222112

3131231112112

查詢/etc/passwd檔案中root賬號的資訊,

不使用插入符號^匹配:

[weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "

root

" /etc/passwd

root:x:

0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

查詢/etc/passwd檔案中root賬號的資訊,使用插入符號^匹配:

[weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "

^root

" /etc/passwd

root:x:

0:0:root:/root:/bin/bash

檢視有空行有多少行:

[weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "

^$" list.txt | wc -l

1

檢視所有匹配112*的行:

[weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "

112*

"list.txt

1122

11211222

2211

22111

1122222112

3131231112112

檢視所有以數字"3"開頭,"2"結尾的行:

[weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "

\<3.*2\>

" list.txt --color

3131231112112

檢視檔案中含有至少11個連續小寫字母的行:

[weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "

[a-z]\

"list.txt

bbcdefss

the people

's replublic of china

fdoutjjlsjpwkfks

abdabeccde

bash正規表示式

1.1 正規表示式 正規表示式 regular expression 是一種字元模式 pattern 用來匹配字串中的子串。例如 ro t 可以匹配 root rooot等 ro t 可以匹配 rot root rooot等1.1 正規表示式元字元 元字元是具有特殊含義的字元,不同於字元表面的含義。...

bash 正規表示式初步 sed

sed是一種流編輯器,它是文字處理中非常中的工具,能夠完美的配合正規表示式使用,功能不同凡響。處理時,把當前處理的行儲存在臨時緩衝區中,稱為 模式空間 pattern space 接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案...

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...