我正在使用Windows命令行环境编写批处理文件脚本,并希望将文件中某些文本(例如"FOO")的每次出现更改为另一个(例如"BAR").最简单的方法是什么?任何内置功能?
我想在名为1_classification.dat,2_classification.dat等所有文本文件中将"blue"替换为"red".我想编辑同一个文件,所以我尝试了这个代码,但它不起作用.我哪里错了?
@files=glob("*_classification.dat");
foreach my $file (@files)
{
open(IN,$file) or die $!;
<IN>;
while(<IN>)
{
$_='~s/blue/red/g';
print IN $file;
}
close(IN)
}
Run Code Online (Sandbox Code Playgroud) 从这个例子以下这里的另一个问题SO.
我将以下代码添加到我的基本perl脚本中.
#!/usr/bin/perl
$^I = '.bak'; # create a backup copy
while (<>)
{
s/NewProdId/$ARGV[1]/g; # do the replacement
s/PortId/$ARGV[2]/g; # do the replacement
s/AssemblyId/$ARGV[3]/g; # do the replacement
print; # print to the modified file
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用多个参数调用perl脚本时,它会中断.它似乎误将我的另一个参数误认为是要打开的文件名.
无法打开1-THU-71:在./process.pl第11行,<>第37行没有这样的文件或目录.
无法打开1-5XJ0DF:在./process.pl第11行,<>第37行没有这样的文件或目录.
无法打开1-3F0MB9:在./process.pl第11行,<>第37行没有这样的文件或目录.
我的bash脚本调用是这样的:
./process.pl "test.txt" $values
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?