Com gnu split
você pode usar a opção --filter
:
split --numeric-suffixes=0001 -l 80 -a 4 \
--filter='sed -n -e "1,40w $FILE" -e "41,80w ${FILE/X/Y}"' infile X_
Isso dividirá o arquivo em partes de 80 linhas, canalizando o conteúdo de cada parte para sed
, que grava as primeiras 40 linhas em $FILE
(o nome da peça, nesse caso split
substitui por X_????
- consulte man split
) e o restante a ${FILE/X/Y}
, que é o mesmo nome, mas com X
substituído por Y
.
Como o requisito foi alterado e você só precisa dividir em partes com nomes alternados, você também pode usar 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
Isso define o nome da peça com base em duas variáveis, p
refix e c
ounter. A cada 40 linhas, o p
refix muda para Y
, a cada 80 linhas o p
refix muda para X
e o c
ounter é incrementado.