2016-05-28 14 views
1

我有這個sed表達式替換「$關於」和「關於」

sed 's/$ABOUT/"About"/g 

我想改變它,這樣$的是僅更換,當它後跟空白或行尾。所以對於空白這個工作:

sed 's/\($ABOUT\)\([[:space:]]\)/"About"\2/g' 

Wondefull!但是行尾呢?我嘗試插入一個$

sed 's/\($ABOUT\)\([[:space:]$]\)/"About"\2/g' 

但這不行!另外\$不起作用。 當我插入$而沒有[[:space:]]時,它可以工作(但僅適用於EOL,當然不適用於空格)。

我錯過了什麼,我不是嗎?請告訴我它是什麼。

回答

2

您將需要使用交替否則$是文字$內部字符類:

sed -E 's/($ABOUT)([[:space:]]|$)/About\2/g' 
+1

完美的事情,謝謝! $中的$必須逃脫! – Nathan

+1

是的,在雙引號內應該被轉義,但是在單引號中可以在不轉義的情況下使用 – anubhava

+2

不需要'$ ABOUT'附近的parens:'sed -E's/$ ABOUT([[:space:]] | $) /關於\ 1/g''。 –