1. 程式人生 > 其它 >Linux sed之正則表示式:sed替換字串時,使用正則表示式的注意事項

Linux sed之正則表示式:sed替換字串時,使用正則表示式的注意事項

一、元字符集

^

  錨定行的開始如:/^sed/匹配所有以sed開頭的行。

$

  錨定行的結束如:/sed$/匹配所有以sed結尾的行。

.

  匹配一個非換行符的字元如:/s.d/匹配s後接一個任意字元,然後是d。

*

  匹配零或多個字元如:/*sed/匹配所有模板是一個或多個空格後緊跟sed的行。

[]

  匹配一個指定範圍內的字元,如/[Ss]ed/匹配sed和Sed。

[^]  

  匹配一個不在指定範圍內的字元,

  如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。

\(..\)

  儲存匹配的字元,如s/\(love\)able/\1rs,loveable被替換成lovers。

&   

  儲存搜尋字元用來替換其他字元,如s/love/**&**/,love這成**love**。

\<

錨定單詞的開始,如:/\<love/匹配包含以love開頭的單詞的行。

\>

錨定單詞的結束,如/love\>/匹配包含以love結尾的單詞的行。

x\{m\}

重複字元x,m次,如:/0\{5\}/匹配包含5個o的行。

x\{m,\}

重複字元x,至少m次,如:/o\{5,\}/匹配至少有5個o的行。

x\{m,n\}

重複字元x,至少m次,不多於n次,如:/o\{5,10\}/匹配5--10個o的行。

https://www.cnblogs.com/aaronhoo/p/5284991.html

sed替換字串時,使用正則表示式的注意事項

sed的使用方法為:

使用單個模式替換:sed 's/pattern/replacement/flags' filename,例如echo 'abc' | sed 's/a/A/'-->Abc

使用多個模式同時替換:sed 's/pattern1/replacement1/;s/pattern2/replacement2/' file,

例如,sed 's/^\s*//;s/\s*$//' totrim.txt 可以實現trim()函式的效果(去掉字串兩端的空格字元)

pattern可以使用正則表示式,不過寫法要注意,例如一般用\d表示一個十進位制數,但在sed裡,必須用[0-9]來表示,正則表示式一般用+(加號)表示一個或多個,但寫在sed裡前面必須加上轉椅符號反斜槓,

如sed 's/[0-9]\+$//g' file,表示去掉檔案中每行末尾的一個或多個數字。

更多注意事項需要參考《Linux命令列與shell指令碼程式設計大全 第2版》、《Linux shell指令碼攻略第2版》