Perl - 在文件中找到匹配项后插入行

rah*_*hul 2 perl

我在 some_1.xyz 中有一个具有以下语法的文件

module some_1 {
INPUT PINS
OUTPUT PINS
}
Run Code Online (Sandbox Code Playgroud)

我想在 line module some_1 { 之后插入 APPLY DELAYS xx 和 APPLY LOADS ld

以下代码仅适用于一个文件,即,如果我将 some_1.xyz 替换为 *.xyz,则该脚本不起作用。我尝试引入 sleep(xx) 但代码对多个文件不起作用,我无法弄清楚为什么它不起作用。任何指针表示赞赏。谢谢

@modulename_array = `grep "module " some_1.xyz | cut -f 2 -d ' '`;
@line = `grep "module " some_1.xyz`;

chomp(@line);
chomp(@kfarray);

$i = 0;
foreach (@modulename_array) {
  print "Applying delay and load to $_.xyz $line[$i] \n";

  `perl -ni -le 'print; print "\tAPPLY DELAY xx \n \tAPPLY LOADS  ld\n" if/$line[$i]/' $_.xyz`;
  $i++;
  #sleep(3);

}
Run Code Online (Sandbox Code Playgroud)

小智 5

更简单的事情,在一行中使用 SED(如果这个问题仅适用于 UNIX,并且匹配是一个固定值,而不是正则表达式):

sed -i -e "s/<match pattern>/<match pattern>\n<new line here>/g" file.txt
Run Code Online (Sandbox Code Playgroud)

(与初始响应相比,选项已交换,因为第一个评论。)

注意 \n 是添加一个新行。问候