sed置換でLHSとRHSで変数を使用するには?

sed置換でLHSとRHSで変数を使用するには?

私がしたい:

cat update_via_sed.sh | sed 's/old_name/new_name/' > new_update_via_sed.sh

私のプログラムで。

しかし、次のような変数を使用したいと思います。

old_run='old_name_952'
new_run='old_name_953'

試してみましたが、交換は発生しません(エラーなし)。私は試した:

cat update_via_sed.sh | sed 's/old_run/new_run/'
cat update_via_sed.sh | sed 's/$old_run/$new_run/'
cat update_via_sed.sh | sed 's/${old_run}/${new_run}/'

ベストアンサー1

次のことができます。

sed "s/$old_run/$new_run/" < infile > outfile

ただし、これは$old_run正規表現として扱われるため、変数に含まれる特殊文字(/または)は次のようになり.ます。脱出する。同様に、$new_runおよび&文字は特別な処理を必要とし、その中の改行文字を\エスケープする必要があります。/

$old_runまたはの内容が$new_runあなたの管理下にない場合、批判的脱出を行うか、そうでない場合このコードはコード挿入の脆弱性と同じです。

おすすめ記事