如何使用文件中的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.
+++++++++++++++++++++++++++++++++
答案 0 :(得分:4)
您可以像这样使用范围运算符...
:
perl -nlwe 'print if /^\++$/ ... /^\++$/' input.txt
三点范围操作符具有一个特殊功能,可以在此处使用。来自perldoc perlop
[“双点”“..”运算符]可以测试右操作数,并在相同的评估中变为false(如在awk中),但它仍然返回true一次。如果您不希望它在下一次评估之前测试正确的操作数,就像在sed中一样,只需使用三个点(“...”)而不是两个点。在所有其他方面,“......”的行为就像“......”一样。
答案 1 :(得分:1)
这样的事情可行:
while(<>){
print if /^\++$/ .. /^\++$/;
}