sedを使用して\uを挿入する正しい方法は何ですか?

sedを使用して\uを挿入する正しい方法は何ですか?

\u何かを含む文字列を見つけて、ここに何かを追加しようとしています。

例えば、

$ echo \user | sed 's/\us/\\usX/' -

正しく作成されました

\usXer

ただし、ファイルの内容があり、次のコードを使用して入力した場合

$ sed -i 's/\us/\\usX/' test

わかりました。

\\usXer

これにより、問題がエスケープされたバックスラッシュであり、これは必要ないと仮定できます。ただし、これを削除すると、コマンドの\u(大文字)置換のみがトリガされます。ssed

\uそれでは、挿入シーケンスを使用する正しい方法は何ですかsed

ベストアンサー1

まずsed 's/\us/…/'検索しません。\usus検索するには\usを使用する必要がありますsed 's/\\us/…/'

特殊文字を含む文字列を検索する場合次へ追加これに役立つ手法は、文字を使用して検索&中の文字列を参照することです。例えば、

$ sed -i 's/\\us/&X/' test

一般的に言えば&(「検索内容」とも呼ばれる)、検索文字列に一致するパターン空間の部分を表す。これは、検索文字列が単純な正規表現でない場合に便利です。

$ echo You say goodbye and I say hello. | sed 's/[gh][a-z]*[eo]/"&"/g'
You say "goodbye" and I say "hello".

's/\\usmthing/…/'検索方法と同様に、挿入方法を\usmthing使用する必要があります。例えば、's/…/\\usmthing/'\usmthing

$ エコ sh|sed 's/oo/\ulish/'
ブリッシュ←気づく\ul置く」と解釈される。「エル」入力する首都」。

$ エコ sh|sed 's/oo/\\ulish/'
ブルース

おすすめ記事