sedスクリプトにパラメータを渡すことはできますか?

sedスクリプトにパラメータを渡すことはできますか?

簡単なsedスクリプトを考えてみましょうfoo-to-bar.sed

s/foo/bar/

そして簡単な呼び出し:

sed -f foo-to-bar.sed some-file.txt

それでは、代替文字列(この場合はbar)をカスタマイズし、それをsedスクリプトにパラメータとして渡すとします。それは可能ですか?

注:sedスクリプトを削除し、シェル変数をインラインで使用できることを知っています。私は特にsedスクリプトにパラメータを渡すことに興味があります。ドキュメントには何も見つかりませんが、まだ何かが欠けていることを願っています。

ベストアンサー1

実際にはパラメータを渡す方法がないように思えるので、私が考えることができる最善の解決策は、コマンドラインで置き換えられた中間プレースホルダを使用することです。foo-to-bar.sed:

s/foo/#ARG1#/

移動する:

sed -f foo-to-bar.sed -e "s/#ARG1#/bar/g" some-file.txt

説明:foo最初に置き換えてから、#ARG1#コマンドbarラインから渡された内容に置き換えます。-e後で持つことが重要であることに注意してください-f。区切り文字も特別なものではなく、#通常ファイルに表示されないものを使用してください。

おすすめ記事