左括弧をsedに置き換える方法は?


27

(ファイル内の一部の文字に置き換える必要があり、できません。\(sedでのグループ化に使用され\\(、sedで使用した場合\(、単なるとしてではなく文字として処理しました(。私には難しいケースのようです。


7
提案:キャラクターを別のキャラクターに置き換える場合は、tr(anslate):を使用しecho 'Hello (world)' | tr '()' '[]'ます。出力しますHello [world]
-Lekensteyn

回答:


45

(拡張正規表現)なしで sed -r使用\(\)する場合()、グループ化するのではなく使用するように動作します。

sed -e 's/(/X/g'

例えば

$ echo "foo (bar) (baz)" | sed -e 's/(/X/g'
foo Xbar) Xbaz)

使用したい-r場合は、([]に置くことができます、例えば

sed -re 's/[(]/X/g'

以下のようLekensteyn備考使用してtr、あなたが単に交換すると、正規表現のフルパワーを必要としないように、より適切な場合があります。


TL; DR:逃げないでください。
qwertzguy

。私は、「(」でスペースが先行し、続いて確認して、「分割」機能を「爆発」とPHPの廃止予定の「分割」を置き換えるためにこれを使用grep -lRZ " split(" . | xargs -0 sed -i -e 's/ split(/ explode(/g'
バトルバトカス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.