轉義字符Escape character在正則中的用法

通過()的在基本正則和擴展正則中的不同使用,詳細介紹了轉義字符的使用注意事項

轉義字符Escape character在正則中的用法

Linux中的轉義字符通常用?\ 標識開始,轉義意味著?\ 后面的字符有特殊的意義,通常是一個控制動作,比如在echo命令中echo -e ?\a表示警告,一般情況下能聽到一聲蜂鳴。

在正則中,也有同樣的轉義需求,下面把常用的也是容易混淆的幾個字符一一說明用法。在引入正文之前,請先看這個題目:

用基本和擴展正則找出/etc/rc.d/init.d/functions文件中行首為某單詞(包括下劃線)后面跟一個小括號的行:

基本正則表示:grep “^\([[:alpha:]]\|_\).*()” functions

擴展正則表示:egrep? “^([[:alpha:]]|_).*\(\)” /etc/rc.d/init.d/functions

從中可以看到小擴號()在基本正則中沒有轉義,而在擴展正則中用到了轉義\(\),原因是在基本正則的定義中,\(\)是分組的表達,所以()就表示是擴號的原義,而在擴展正則中,分組是用()來表示,所以()的原義需要\(\)來進行轉義。

對于點號 . 來說,無論在基本還是擴展正則中,都是匹配任意單個字符的特殊意義,所以如果正則表達式中需要點號 . 本來的意義如文件的后綴.txt, .sh時,就需要用 \ 轉義,也可以用[.]來表示。

此外,在使用vim或sed對輸出或文件進行查找替換操作時,如果用到的分割符號是 / , 查找或替換的內容包包含有 / 時,需要做轉義。例子:

需要把一個文件中所有的/etc替換為/conf,如果用s///,轉義如下:

? ? ? ? sed ‘s/\/etc/\/conf/’ file1

可以用更直觀的方法來避免轉義?/ ,如更改為其它分割符@@@或###,這時 / 不需要再轉義:

? ? ? ? sed ‘s@/etc@/conf@’ file1?或sed ‘s#/etc#/conf#’,但是這種情況下,如果查找替換的字符包括分割符@ #,同樣也需要用 \ 來分別進行轉義。

總之,轉義字符的使用比較靈活,總的原則是在語法結構中定義有特殊作用的字符,如果想引用字符本身,都需要用?\?轉義。

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95854

(10)
Evan LiangEvan Liang
上一篇 2018-04-13 19:57
下一篇 2018-04-13 21:43

相關推薦

  • 第八周總結

    AWK高級用法

    Linux筆記 2018-05-20
  • yum

    yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器?;禦PM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。yum提供了查找、安裝、刪除某一個、一組甚至全部軟件包的命令,而…

    2018-04-20
  • Centos6.9上安裝httpd2.2.34步驟

    Centos6.9上安裝httpd2.2.34步驟 1.????? 首先安裝包組 yum groupinstall “development tools”如下圖所示: 2.????? 我們需要建立一個repo倉庫,可以指向網絡鏡像地址,也可以指向光盤,這里為了更加快速,所以指向光盤。并且清除緩存,獲取repolist列表。 在/etc/yum.repos.d…

    2018-04-22
  • docker學習記錄系列(一)

    虛擬化與容器

    Linux筆記 2018-06-02
  • 進程和計劃任務

    進程(Process)是計算機中的程序關于某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。 進程的狀態:運行態running,就緒態ready,睡眠態(可中斷,不可中斷),停止態,僵死態。 進程管理工具 ps命令 ps aux #顯示詳細的當前運行的所有進程 ps axo pid, cmd,%cpu,tty,%mem k…

    Linux筆記 2018-05-05
  • mysql sql語言 增刪改查

    數據庫 數據 增create insert 刪drop delete 改alter update 查 select 創建數據庫db1 查看數據庫目錄db1 刪除數據庫 查看字符集列表 查看表 創建表 查看表的定義 查看表的屬性信息 創建表 查看表的定義 查看表的具體信息 查看完整表的定義 查看user表的定義 利用別的表的信息創建表 創建一張表像另一張 表 …

    Linux筆記 2018-06-11
欧美性久久久久