2016-05-28 3 views
1

で、私はそれが続いているとき

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

私は、$はABOUTのみ交換されるように、それを変更したい「について」と「ABOUT $」置き換えるために、この sed表現を持っています空白または行の終わり。したがって、空白の場合は、次のようになります。

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

のwonderfull、ありがとう! ABOUTの$はエスケープする必要があります! – Nathan

+1

はい、二重引用符で囲みます。エスケープする必要がありますが、一重引用符で囲むことでエスケープしなくても使用できます。 – anubhava

+2

'$ ABOUT'の前後には括弧は必要ありません:' sed -E '/ $ ABOUT([[:space:]] | $) /約\ 1/g "です。 –