Unixスクリプトで行全体を検索して置換する

Unixスクリプトで行全体を検索して置換する

というスクリプトがありますpraveen.pl。このスクリプトには複数の行が含まれており、そのうちの1つは次のとおりです。

$input_store_nbr = "00100";

内部番号は"nnnnn"入力に応じて手動テスターに​​よって変更されます。だから私はこの行を見つけて"nnnnn"入力した内容に応じて変更したいと思います。

たとえば、私の入力が10000次の行の場合はpraveen.pl、次のように変更する必要があります。

$input_store_nbr = "10000";

次にこの行に変更したい場合は、次のよう20000に変更する必要があります。

$input_store_nbr = "20000";

praveen.plファイル内の店舗番号の編集を自動化しようとしています。

ベストアンサー1

このスクリプトを変更する必要がありますが、奇妙な理由でコマンドライン引数を受け入れるように変更できない場合は、次のことを試してください。

new_val=5000
sed -e "s/\$input_store_nbr = \"[0-9]+\";/\$input_store_nbr = \"$new_val\";/" src_file > tmp_file
mv tmp_file src_file

sedあるいは、それをサポートするファイル(たとえば、パラメータを持つGNUまたはBSD)がある場合は、(明示的な)一時ファイルを必要とせずにこの-iフラグを使用できます。sed

私はまだ、次のことを行うためにソーススクリプトを一度変更する方が良いと思います(すでに修正しているので)。

$input_store_nbr = $ARGV[0];

sed次に、ファイルを再構築するためにスクリプトに渡すのと同じように、最初のコマンドライン引数として新しい番号を使用して呼び出します。

おすすめ記事