У меня огромный файл данных в следующем формате:
section 1
data 1
end section
section n # n is a large number > 10000
data n
end section
Маркер для конца каждого раздела совпадает с «конечным разделом».Мне нужно часто получать раздел, а затем еще один раздел в конец файла.Я делаю это в 2 этапа:
cat dataFile | perl6 -ne 'my $n=1234; .say if /section \s $n/ ff /end \s section/' > neededPart
cat dataFile | perl6 -ne 'my $n=4321; .say if /section \s $n/ ff *' >> neededPart
Это громоздко, когда я делаю это много раз.Интересно, в perl6 есть что-то вроде end-of-input или eof в совпадении, так что я могу сделать только одну строку:
cat dataFile | perl6 -ne '.say if /1234 || 4321/ ff /"end section" || endOfFile/' > neededPart
Использование следующего не работает:
/1234 || 4321/ ff (/end/ or *)
/1234 || 4321/ ff ($_ ~~ /end/ or *)