複数の代替式を使用する場合は、sedに一度だけ置き換えるように指示できますか?

複数の代替式を使用する場合は、sedに一度だけ置き換えるように指示できますか?

いくつかの代替ルールがありますが、最初の適用可能なルールのみを使用したいと思います。sedデフォルトでは、出力は残りのルールを使用して処理され続けます。最初の交換後に停止する方法は?ただ使ってもいいですsedか?マニュアルにオプションがありません。

実際の出力

$ sed "s/something/else/; s/one/two/; s/two/three/;" <<<"one"

three

アクションが必要

$ sed "s/something/else/; s/one/two/; s/two/three/;" <<<"one"

two

ベストアンサー1

t置換が行われたら、各コマンドの後に次を使用してsスクリプトの最後に分岐します。

sed -e 's/something/else/;t' \
    -e 's/one/two/;t' \
    -e 's/two/three/;t' <<<"one"

ここでt最後に置き換えたコマンドは必要ありませんが、このコードが自動的に生成されると、s最後のサフィックスでもすべてのサフィックスで持っていても問題はありません。

おすすめ記事