Вы можете использовать csplit
:
echo "a
b
c
d
e
f" | csplit -s - '/^$/'
Или
csplit -s filename '/^$/'
(при условии, что содержимое «filename» совпадает с выводом echo) создаст в этом случае два файла с именами «xx00» и «xx01». Префикс можно изменить с «xx» на «outfile», например, с помощью -f outfile
, а количество цифр в имени файла можно изменить на 3 с помощью -n 3
. Вы можете использовать более сложное регулярное выражение, если вам нужно иметь дело с окончаниями строк в Macintosh.
Чтобы разбить файл на каждую пустую строку, вы можете использовать:
csplit -s filename '/^$/' '{*}'
Шаблон '{*}'
вызывает повторение предыдущего шаблона столько раз, сколько возможно.