
\u
何かを含む文字列を見つけて、ここに何かを追加しようとしています。
例えば、
$ echo \user | sed 's/\us/\\usX/' -
正しく作成されました
\usXer
ただし、ファイルの内容があり、次のコードを使用して入力した場合
$ sed -i 's/\us/\\usX/' test
わかりました。
\\usXer
これにより、問題がエスケープされたバックスラッシュであり、これは必要ないと仮定できます。ただし、これを削除すると、コマンドの\u
(大文字)置換のみがトリガされます。s
sed
\u
それでは、挿入シーケンスを使用する正しい方法は何ですかsed
?
答え1
まずsed 's/\us/…/'
検索しません。\us
をus
検索するには\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/' ブルース