Используете eof или конец ввода в ff match?
У меня есть огромный файл данных в следующем формате:
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 ответ
Вы можете попробовать использовать два ff
условия вместо одного. Например:
perl6 -ne '.say if (/1234/ ff /"end section"/) || (/4321/ ff *)' <dataFile