Perl系统()不能与sed一起使用

heh*_*301 -1 regex bash perl sed

system( `sed -i 's/[ 0-9]+) //' fileName` );在perl脚本中有一行直到完成.但该文件未被编辑.
当我sed -i 's/[ 0-9]+) //' fileName在shell上运行它运行正常并按预期编辑文件.为什么他们会有不同的结果,我该如何解决?

run*_*rig 7

system( `sed -i 's/[ 0-9]+) //' fileName` );
Run Code Online (Sandbox Code Playgroud)

第一个反引号执行系统命令并从中返回输出.所以你在sed的输出上调用system(),这可能不是你想要的.你可以这样做:

system(sed => -i => 's/[ 0-9]\+) //', 'fileName' );
Run Code Online (Sandbox Code Playgroud)

无论如何,炮轰sed是相当不必要的,因为perl可以做任何可以做的事情,例如:

$^I = 1;

@ARGV = 'fileName';
while (<>) {
  s/[ \d]+\) //;
  print;
}
Run Code Online (Sandbox Code Playgroud)