第三章 Linux特殊字符和正則表達式

一,本章內容

1,特殊字符

2,文件名通配符

3,多命令中的邏輯運算符和括號

4,命令中正則表達式

備註:本Linux系統爲RHEL5.3

二,linux系統特殊字符

1,雙引號

1]$ NAME=”mary” 

2]echo“now time: ’date’ ”    # 使用反引號引用命令輸出

3]# echo $NAME | grep jhon Alix錯誤錯誤錯誤

   # echo $NAME | grep “jhon Alix”

2,單引號

1]$ NAME=”mary” 

2]echo“now time: ’date’ ”    # 使用反引號引用命令輸出

3]# echo $NAME | grep jhon Alix錯誤錯誤錯誤

   # echo $NAME | grep ‘jhon Alix’

3,命令引用符反引號

# ls -l  ‘cat /etc/shells’

4,變量引用和命令轉換符美元符號

$表示引用一個變量,只需在變量名稱前面加上”$”

# ls -l $(cat /etc/shells)    # 使用命令轉換符引用命令輸出

5,反斜線屏蔽符

\屏蔽特殊字符本身的含義。

# echo “please pay \$15.50 .”    #使用反斜線屏蔽輸出字符串中的$

三,文件名通配符

1?表示匹配文件名中任意一個字符

# ls -l a?   

# ls -l a??  

2*表示匹配文件名中的任意字符串,匹配長度可以是零到一個字符,也可是很長字符組成的字符串

# ls -l *c

# ls -l ee*c

# ls -l *c?

3[ ]字符範圍匹配,用於匹配一個字符範圍,其表現形式可以是“-”表示的字母和數字的範圍,也可以是幾個字符的組合

# ls -l [klsyz]*  #klsyz中任意字母開頭的所有文件

# ls -l a*[cde]?

4[! ]排除範圍匹配符,不匹配符號內出現的字符組合或字母數字範圍

# ls -l [0-9][!0-9]  #有兩個字符,且第一個爲數字,第二個爲非數字

四,多命令中的邏輯運算符和括號

1,邏輯或”||”

Command1 || command2

先執行命令1,若成功,則跳過命令2,若失敗,執行命令2

# mail -f /root/mbox || echo “permission denied”

2,邏輯與”&&”

Command1 && command2

先執行命令1,若成功,執行命令2,,若失敗,則跳過命令2

# mv ~/rm.txt / && echo “successfully moving files”

3,括號(){}

(command1 ; command2; command3...)

{command1 ; command2; command3...}

按順序執行括號裏面的命令,直至括號裏面的所有命令執行結束,然後返回執行其他命令。

五,命令中正則表達式

1”.” 單字符匹配,放在”/ /”

“/.i....../”

“/27210103../”

2”*” 單字符或字符串重複匹配符,用來匹配單個字符或一個字符序列的一次或多次重複出現。

“/bo */” 可匹配、bo, boo, booooo...

3”^” 行首匹配符,用於在匹配中指示行首位置字符串或模式

“/^l/”

“/^2721010325/”

正則表達式不具備匹配文件名功能。因此不能對ls -l命令直接使用以上模式,可以將上面的模式交由一些篩選命令處理,如交由grep命令時:ls -l | gerp /^l/

4”$” 行尾匹配符,用於在文本的每一行的行尾匹配符串模式,使用時放在匹配字符串後面

“/^.....$l/”匹配所有隻有5個字符的行

“/love$/”匹配行尾是love的行

5”\” 反斜槓屏蔽符,如屏蔽#; ,“ , ‘, : ,*, ^, $, ?, [], \

# expr 256 \* 256     

“/\^\^\.txt/”匹配^^.txt

6”[]” 匹配符

“/[Ll]ove/”匹配Love, love

 “/[^a-Z]/”表示不匹配所有字母

7”\<” ,”\> 詞首匹配符,詞尾匹配符

“/\<love/”匹配所有以love爲詞首的文本

“/love\>/”匹配所有以love爲詞尾的文本

8”x\{\}” 重複次數匹配符

“/m\{5\}/”匹配m出現次數爲5次的文本

 “/m\{5,\}/”匹配m出現次數至少爲5次的文本

 “/m\{5,10\}/”匹配m出現次數爲510次的文本

9,組合使用正則表達式

“/^$/”匹配空行

    “/^.*$/” 用來匹配這樣的整行:使用一種字符填充整行。

“/^[tT]he/”匹配以the或者The開頭的所有行

“/^[^Tt]he/”排除以the或者The開頭的所有行

“/[0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}\.[0-9]\{1,3}\/”匹配一個IP地址

“/\<love\>/”精確匹配love

 

 

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