2013-02-12 37 views

回答

1

這取決於你所使用的-r交換機上運行:

-r, --regexp-extended 

      use extended regular expressions in the script. 

隨着-r的括號表示捕獲組,並匹配字面括號,你必須逃避它們。

沒有-r反之亦然。

考慮:

$ sed -r 's/foo([0-9]*)/\1/' <<<'foo123' 
123 
$ sed 's/foo([0-9]*)/\1/' <<<'foo123' 
sed: -e expression #1, char 17: invalid reference \1 on `s' command's RHS 
$ sed 's/([0-9]*)//' <<<'foo(123)' 
foo 
$ sed 's/foo\([0-9]*\)/\1/' <<<'foo(123)' 
(123) 

(在最後一組匹配零位)

0

在經典的正則表達式sed用途,你必須反斜線括號給他們的特殊意義。如果您的sed支持-r,則可以使用「擴展」正則表達式,其中括號具有特殊含義沒有反斜槓,反斜槓會使它們失去含義。

\w應該在awk中工作。你試過了什麼,你期望輸出什麼,你得到了什麼輸出?

相關問題