我正在用perl解析一个文件。我想打印regex匹配后的所有行
例如,文件为
num_of_dogs,10,#start_reading
num_of_cat,15
num_birds,20
num_of_butterfly,80
.....
我想要匹配后的所有行#start_reading
我试过这个,但它只打印下一行
while (my $line = <$csv_file>) {
next unless $line =~ /(.*),#end_of_tc/;
if ($line =~ /(.*)/){
print $file = $1;
}
}
输出如下所示
num_of_cats,15
num_of_birds,20
......
先谢谢你了
5条答案
按热度按时间wko9yo5t1#
当行包含
#start_reading
时,您可以设置一个标志,并仅在标志为true时打印该行:如果你想在遇到
#stop_reading
后停止阅读:mfpqipee2#
您还可以使用触发器(
..
)运算符来绕过从文件开头到包含#start_reading
的所有行这将绕过从文件的第1行到匹配
#start_reading
的行的打印。然后打印文件中的其余行。nwlqm0z13#
通过gnu sed,如果你的数据在'd ',
owfi6suc4#
一个高效和干净的方式来处理一个文件后,只有在一定的点
2jcobegt5#
这可以通过下面的命令来实现。
/xxx/../yyy/
让perl打印两个匹配项之间的文本。在您的例子中,第二个匹配只是文件的结尾,所以使用关键字EOF
。