从Perl中的文件中删除一组行

时间:2018-09-15 11:37:16

标签: perl

我有一个Verilog文件,如下所示:

~/Region/Area/Test/Index

在这里,我想删除整个模块,模块名称将由我指定。例如:我想删除module1,所以我要删除从module1到endmodule的行(module1,Line4,Line5,Line6,endmodule)。并保持其他其余模块不变。

删除模块1时的预期输出:

Line1
Line2
Line3
module1
Line4
Line5
Line6
endmodule
Line7
Line8
module2
Line9
Line11
Line12
Line13
endmodule
Line15
Line16

我该怎么办?

1 个答案:

答案 0 :(得分:1)

为此,我将使用sed而不是perl:

sed -e '/module1/,/endmodule/d' input.txt

X,Y指定了要执行的操作的行范围,从匹配X的那一行开始,到匹配Y的那一行结束,d命令基本上说删除当前行而不是打印像平常一样。

如果在perl上进行设置,则scalar form of the range operator..)允许进行相同的操作:

perl -ne 'print unless /module1/ .. /endmodule/' data.txt