sedコマンドの助けが必要です

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

上記のコマンドをさまざまな方法で修正しましたが、期待した結果は出ません。

ベストアンサー1

まず、一度に1つの操作を実行する方が簡単なので、コピーを使用して行を空白に保ち、その行を変更して最初の出力行を作成して印刷し、復元を使用してh行をp保存gして変更します。 2番目の出力行を生成します。出力ライン。

s/eng./&/これにより、最初のセクションのように非常に簡単な置換を行うことができ、s_/.*/__ディレクトリは任意の名前を持つことができます。s/bmb/bmx/2行目も非常に簡単です。

echo bmb/eng/case.bmb | sed 'h;s_/.*/_/_;p;g;s/bmb/bmx/g'

希望の出力を生成します。

ワードプロセッサのクリップボードと同様に、予約済みスペースを使用できます。これは非常に多様で使いやすいツールですが、残念ながら多くのsedユーザーはこの機能を利用しません。

おすすめ記事