查找并替换 unix 脚本中的整行

查找并替换 unix 脚本中的整行

我有一个名为praveen.pl.该脚本包含许多行,其中一行是:

$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来重写文件一样。

相关内容