正規表示式規則及方法

2021-10-06 13:53:21 字數 2730 閱讀 8071

# linux, 正規表示式

基礎正規表示式:

表示:. 單個任意字元

[???] 匹配指定範圍內的任意單個字元 & 示例: [123] 取意為匹配單個字元1或2或3

[^] 取反不包含的匹配

次數篩選:

* 前一字元出現任意次數,零次或者多次

.* 任意字元出現任意次數。

\? 表示前一字元出現零或一次

\+ 表示前一字元出現一次或以上

\ 精確前一字元出現的次數

\ 前一字元出現精確幾次到幾次

\ 前一字元出現最多n次

\ 前一字元出現最少n次

位置錨定:

^ 行首錨定,開頭行首 &示例:^a

$ 行尾錨定,結尾字元 &示例:b$

^$ 表示空行

\b 放於字元左側表示為單詞詞首

\b 放於字元右側表示為單詞詞尾

分組:\(\) 將乙個或多個字元**在一起,當作乙個整體處理。& 示例:\(abc\)\+ 表示為abc 出現一次或以上次數,而不是c 出現了一次或以上次數

\1 後向引用,在一段命令中引用前某個指定分組的結果 & 示例:\(aaa\)\+\1 再次引用第乙個分組的aaa

\| 或的運用 &示例:grep "^\(a\|b\)" 此為表示抓取a或b開頭的行

[擴充套件]:

[:alnum:] 字母和數字

[:alpha:] 代表任何英文大小寫字元,=同於a-z,a-z

[:lower:] 小寫字母 [:upper:] 大寫字母

[:blank:] 空白字元(空格和製表符)

[:space:] 水平和垂直的空白字元

[:cntrl:] 不可列印的控制字元 (推個、刪除、警鈴)

[:digit:] 十進位制數字 [:xdigit:] 十六進製制數字

[:graph:] 可列印的非空白字元

[:print:] 可列印字元

[:punct:] 標點符號

正規表示式舉例說明

ip a |

grep -o "\([0-9].*[.]\)"

# 通過正規表示式抓取ip位址,粗略

ip a |

grep -o "[0-9]\\.[0-9]\\.[0-9]\\.[0-9]\"

# 正規表示式抓取ip位址

ip a |

grep -o "\b\([0-9]\\.\)\[0-9]\\b"

# 正規表示式抓取ip 位址公升級版 df|

grep

"^/dev/sd"

# 抓取硬碟使用率

ip a |

egrep -o "\b(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.)([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b"

# 上面去除ip 位址

練習題題:顯示/proc/meminfo 檔案中以大小寫s 開頭的行(兩種方式)

解: cat /proc/meminfo |

egrep

"^(s|s)"

# 擴充套件正規表示式

cat /proc/meminfo |

grep

"^\(s\|s\)"

# 基礎正規表示式

題: 顯示/etc/passwd 中不以/bin | /bash 開頭結尾的行

解:cat /etc/passwd |

egrep -v "(/bin|/bash)$"

# 擴充套件正規表示式

cat /etc/passwd |

grep -v "\(\/bin\|\/bash\)$"

# 基礎正規表示式

題:你顯示檔案中的空行和#開頭的行

解: awk

'!/#/' nginx.conf|

awk'!/^$/'

題:顯示使用者預設的shell 程式

解:echo $shell

題: 找出/etc/passwd 中的兩位或者三位數字

解: cat /etc/passwd |

grep -o "[0-9]\"

題: 顯示centos7 的/etc/grub2.cfg檔案中,至少以乙個空白字元開頭的且後面的非空白字元的行

解: cat /etc/grub2.cfg |

grep

"^ "

|grep -v " $"

題:找出」netstat -tan「 命令結果中以listen後跟任意多個空白字元結尾的行。

解: cat f1 |

grep

"listen\( \).*$"

題: 新增使用者bash、testbash、basher、sh、nologin(其shell為/sbin/nologin) ,找出/etc/passwd使用者名稱和shell同名的行

解:cat /etc/passwd |

grep

"^\b\(bin\|bash\|nologin\|sh\)\b"

擴充套件:cat /etc/passwd |

tr -s " ":|

cut -d: -f1 |

grep

"^\b\(bin\|bash\|nologin\|sh\)\b"

解: 抓取passwd 中特定的字元

解:cat test.dh |

egrep -o "(\b1[0-9]\b)|(\b[0-9]\b)"

正規表示式 規則表示式

今天學習了正規表示式的一些基礎知識,1.概念 首先了解了一下正規表示式的含義 一些便於計算機識別的規則,能夠快速方便地對字元進行操作。而對於計算機而言,也有一寫規則表示式,它是能令計算機讀懂的 所以對我們來說看起來比較費勁 也相當於計算機的常識,一遇到就知道你要幹什麼。2.建立正則物件 var re...

正規表示式 規則

system.out.printf example 2f n 19.234 example 19.23 system.out.printf example 6.2f n 19.234 example 19.23 l xn匹配 ascii 碼值等於 n的字元 此處的 n 必須是兩位的十六進製制數。例如...

正規表示式規則

正規表示式是用乙個字串表示乙個特徵,來驗證另乙個字串是否滿足這一特徵的方法。正規表示式主要用於檢驗規則匹配,查詢特定規則字串的位置,進行特定規則替換。1.匹配普通字元 匹配乙個特定的字元,如a,那麼正規表示式就寫為a。2.匹配轉義字元 一般轉義字元 r 回車,n 換行,t 製表符,f 換頁符,v 垂...