linux shell中的正則表達式

正則表達式的使用

正則表達式,又稱規則表達式。(英語:Regular Expression [ˈreɡjulə] 規則的 [ iksˈpreʃən] 表達 ),在代碼中常簡寫爲regex、regexp或RE),計算機科學的一個概念。正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本。

正則表達式不只有一種,而且LINUX中不同的程序可能會使用不同的正則表達式,如:

工具:grep   sed   awk   (這三個並稱爲linux中的文本三劍客)

LINUX中常用的有兩種正則表達式引擎

基礎正則表達式:BRE

擴展正則表達式:  ERE

 

 

Shell正則表達式的組成

基礎正則表達式

特別字符

描述

$

匹配輸入字符串的結尾位置。要匹配 $ 字符本身,請使用 \$

( )

標記一個子表達式的開始和結束位置。要匹配這些字符,請使用 \( 和 \)

*

匹配前面的子表達式零次或多次。要匹配 * 字符,請使用 \*

+

匹配前面的子表達式一次或多次。要匹配 + 字符,請使用 \+

.

匹配除換行符 \n 之外的任何單字符。要匹配 . ,請使用 \.

[

標記一箇中括號表達式的開始。要匹配 [,請使用 \[

?

匹配前面的子表達式零次或一次,或指明一個非貪婪限定符。要匹配 ? 字符,請使用 \?

\

將下一個字符標記爲或特殊字符、或原義字符、或向後引用、或八進制轉義符。例如, 'n' 匹配字符 'n'。'\n' 匹配換行符。序列 '\\' 匹配 "\",而 '\(' 則匹配 "("

^

匹配輸入字符串的開始位置,除非在方括號表達式中使用,此時它表示不接受該字符集合。要匹配 ^ 字符本身,請使用 \^

{

標記限定符表達式的開始。要匹配 {,請使用 \{

|

指明兩項之間的一個選擇。要匹配 |,請使用 \|   如:  Y | y

定位符

^

匹配輸入字符串開始的位置

$

匹配輸入字符串結尾的位置

非打印字符

\n

匹配一個換行符

\r

匹配一個回車符

\t

匹配一個製表符

 

例:統計/etc/ssh/sshd_config文件中除去空行和#號開頭的行的行數

[root@www ~]# grep -v "^$\|^#" /etc/ssh/sshd_config      #使用基礎正則表達式

[root@www ~]# grep -E -v "^$|^#" /etc/ssh/sshd_config   #擴展正則表達式

[root@www ~]# egrep -v "^$|^#" /etc/ssh/sshd_config      #擴展正則表達式

 

2:點字符

[root@www ~]# grep .ot /etc/passwd   #查找passwd文件包括.ot 的字符

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

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

setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章