Используете eof или конец ввода в ff match? - PullRequest
0 голосов
/ 02 декабря 2018

У меня огромный файл данных в следующем формате:

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 *)

1 Ответ

0 голосов
/ 03 декабря 2018

Вы можете попытаться использовать два условия ff вместо одного.Например:

perl6 -ne '.say if (/1234/ ff /"end section"/) || (/4321/ ff *)' <dataFile
...