複数置換のためのLinux Sedコマンド

複数置換のためのLinux Sedコマンド

助けが必要です。元のファイル名と代替ファイル名も必要です。私のファイルは次のとおりです。

bmb/eng/case.bmb

出力は次のようになります。

bmb/case.bmb 
bmx/eng/case.bmx

ここで使用するコマンドは次のとおりです。

$ echo bmb/eng/case.bmb | sed -E 's/.*/& &/;:a;s/([^ ]* [^\n]*)(bm)b/\1\2x/;ta;s~/~&eng&~2'
bmb/eng/eng/case.bmb bmx/eng/case.bmx

私が得た結果は次のとおりです。

bmb/eng/eng/case.bmb bmx/eng/case.bmx

答え1

-e複数のsed式を実行するには、このオプションを使用します。グローバル交換BBそしてBMXs/bmb/bmx/g.挿入するには英語s#/#/eng/#2番目の式では、バックスラッシュなしでスラッシュのみを入力できるように、ハッシュ文字を使用して式と置換項目を区別します。

結果:

$ echo bmb/case.bmb  | sed -e 's/bmb/bmx/g' -e 's#/#/eng/#'
bmx/eng/case.bmx

私を混乱させることは、あなたの命令も機能しなければならないということです。&2番目の式ではスラッシュを使用しませんでしたが、これは読みやすくするためのものです。どこメニュー不明です。たぶんいくつかの文脈が欠けているのでしょうか?

関連情報