С разделением GNU
вы можете использовать параметр - filter
:
split --numeric-suffixes=0001 -l 80 -a 4 \
--filter='sed -n -e "1,40w $FILE" -e "41,80w ${FILE/X/Y}"' infile X_
Это разделит файл на части по 80 строк, передавая содержимое каждой части в sed
, который записывает первые 40 строк в $ FILE
(имя части, в данном случае split
заменяет его на X _ ????
- см. man split
), а остальное на $ {FILE / X / Y}
с тем же именем, но с X
заменено на Y
.
Поскольку требования изменились, и вам нужно только разделить на части с чередующимися именами, вы также можете использовать awk
:
awk 'BEGIN{c=1;p="X"}
{close(fn);fn=sprintf("%s_%04d", p, c);print >> fn}
NR%40==0{p="Y"}NR%80==0{p="X";c++}' file1
Это устанавливает имя части на основе двух переменных, p
refix и c
counter. Каждые 40 строк рефикс p
изменяется на Y
, каждые 80 строк рефикс p
изменяется на X
и c
Счетчик увеличивается.