如何解析文件以包含perl中字符之间的行?

时间:2013-03-14 16:01:36

标签: regex perl

如何使用文件中的perl打印包含+ s的+ s之间的行?我把这些行放在一个文件中。

blah blah
+++++++++++++++++++++++++++++++++
this line should be included.
this line should be included too.
+++++++++++++++++++++++++++++++++
abcd  100101001010 

期望的输出:

+++++++++++++++++++++++++++++++++
this line should be included.
this line should be included too.
+++++++++++++++++++++++++++++++++

2 个答案:

答案 0 :(得分:4)

您可以像这样使用范围运算符...

perl -nlwe 'print if /^\++$/ ... /^\++$/' input.txt

三点范围操作符具有一个特殊功能,可以在此处使用。来自perldoc perlop

  

[“双点”“..”运算符]可以测试右操作数,并在相同的评估中变为false(如在awk中),但它仍然返回true一次。如果您不希望它在下一次评估之前测试正确的操作数,就像在sed中一样,只需使用三个点(“...”)而不是两个点。在所有其他方面,“......”的行为就像“......”一样。

答案 1 :(得分:1)

这样的事情可行:

while(<>){
    print if /^\++$/ .. /^\++$/;
}