當我使用SED和使用大括號這樣爲什麼我需要在sed有時逃生()
sed -re 's/top([0-9]+)//g'
我工作了這一點,但我有時看到我需要逃避括號,有時沒有逃脫的作品。這是爲什麼
爲什麼\ W不使用awk
當我使用SED和使用大括號這樣爲什麼我需要在sed有時逃生()
sed -re 's/top([0-9]+)//g'
我工作了這一點,但我有時看到我需要逃避括號,有時沒有逃脫的作品。這是爲什麼
爲什麼\ W不使用awk
這取決於你所使用的-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)
(在最後一組匹配零位)
在經典的正則表達式sed
用途,你必須反斜線括號給他們的特殊意義。如果您的sed
支持-r
,則可以使用「擴展」正則表達式,其中括號具有特殊含義沒有反斜槓,反斜槓會使它們失去含義。
\w
應該在awk
中工作。你試過了什麼,你期望輸出什麼,你得到了什麼輸出?