По запросу OP решение csplit
, которое работает только с 2 последовательными \n\n
или более.
Самый простой способ - использовать GNU csplit
, который есть в любой современной bash
системе. Предположим, что bla
содержит:
Fiona Gallagher
Frank Gallagher
Sheila Jackson
Dominique Winslow
Kermit
a
v
b
затем
csplit --suppress-matched -z bla "/^$/" '{*}'
будет делать то, что вы хотите, создавая
>cat xx00
Fiona Gallagher
Frank Gallagher
Sheila Jackson
>cat xx01
Dominique Winslow
Kermit
>cat xx02
a
v
b
Вы можете изменить xx
на любой префикс, используя -f
или --prefix=
. --suppress-matched
гарантирует, что элемент, на который вы разбили (пустые строки), не будет выведен, а -z
гарантирует, что последовательные пустые строки не образуют пустых файлов. {*}
Значит, разделить столько раз, сколько это возможно.