Não há necessidade de um script de shell. Você pode fazer isso diretamente com paste
, que é especificado por POSIX :
paste -d '\n' file1 file2
No entanto, ele não manipula contagens de linha diferentes da maneira que você está descrevendo. Para citar as especificações:
If an end-of-file condition is detected on one or more input files, but not all input files, paste shall behave as though empty lines were read from the files on which end-of-file was detected....
Pessoalmente, acho que seria um erro fazer o comportamento que você descreve na sua pergunta. Você seria incapaz de dizer, olhando para a linha 24 da saída, se veio de file1
ou file2
. Com o comportamento real de paste
, você saberia que veio de file2
, já que é um número de linha igual da saída.
Você pode canalizar a saída por meio de tr -s '\n'
da seguinte forma:
paste -d '\n' file1 file2 | tr -s '\n'
Mas, se houver linhas em branco reais em qualquer arquivo, você não obterá os resultados esperados.