while(<FILE>)
{
chomp $_;
$line[$i]=$_;
++$i;
}
for($j=0;$j<$i;++$j)
{
if($line[$j]=~/Syn_Name/)
{
do
{
print OUT $line[$j],"\n";
++$j;
}
until($line[$j]=~/^\s*$/)
}
}
这是我的代码,我试图在 Syn_Name 和空行之间打印数据。
我的代码提取了我需要的块。
但是chunk之间的数据是逐行打印的。我希望每个块的数据都打印在一行上。
最佳答案
简化您的代码。使用触发器操作符来控制打印。请注意,打印最后一行不会添加换行符(除非该行包含多个换行符)。充其量,它打印空字符串。在最坏的情况下,它会打印空白。
您不需要线条的过渡数组,您可以使用 while 循环。如果您无论如何都想存储这些行,我添加了一条注释行,说明如何最好地完成。
#chomp(my @line = <FILE>);
while (<FILE>) {
chomp;
if(/Syn_Name/ .. /^\s*$/) {
print OUT;
print "\n" if /^\s*$/;
}
}
关于perl - 如何在单行上打印某些起始行和终止行之间的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361955/