web-dev-qa-db-ja.com

「\」をsedに置き換える

テキストファイルの'\''sedコマンドを使用して別のWordまたは文字に置き換えたい。

sed "s/'\''/×/g"を使用してみましたが、機能しません。

誰かが解決策を知っていますか?

1
IISomeOneII

リテラルテキスト'\''を置き換える場合は、

sed "s/'\\\\''/new text/g"

\は、正規表現でそれ自体を表すために\\としてエスケープする必要があります。これらのバックスラッシュは、二重引用符で囲まれた文字列の一部であるため、二重にする必要があります。一重引用符に一致させる必要があるため、二重引用符で囲まれた文字列を使用する必要があります(単一引用符で囲まれた文字列には単一引用符を含めることはできません)。

または:

sed "s/'[\\]''/new text/g"

sedに渡される前に文字列が二重引用符で囲まれるため、[\\][\]に変換されます。正規表現の括弧で囲まれた式のバックスラッシュは常にリテラルです。


あなたの命令

sed "s/'\''/×/g"

機能的には同じです

sed "s/'''/×/g"

そして、すべての三重一重引用符を文字×に置き換えます。

7
Kusalananda