次のような大きなファイルがあります。
<Feed stack_overflow>
sourceid 32456
prefeed 1
<LOG>
level 1
cache info
</LOG>
</Feed>
このファイル内のすべてを検索して、Feed タグを含むすべてを取得したいと考えています。したがって、32456 を検索すると、上記のコードのすべてが得られます。
私が今持っているコードは次のとおりです。
#!/usr/bin/perl
my $input = "<Feed stack_overflow"; #Search string
my $end = "</Feed>"; #End string
open (DATA, "file.config") or die "Error";
my @list = grep /\b$input\b(.*?)\b$end\b/, <DATA>;
chomp @list;
print "$_\n foreach @list;
しかし、結果が得られません。検索対象が存在することはわかっています。この正規表現を使用して、特定の文字列を含むすべての行を正常に出力できました。
my @list = grep /\b$input\b/, <DATA>;
しかし、2 つのタグの間のすべてを印刷するには助けが必要です。