Você pode fazer
{
while read l<&3; do
{
head -c"$l"
echo
} 3<&-
done 3<lengths.txt
} <String.txt
Requer alguma explicação:
A ideia principal é usar { head ; } <file
e é derivado da resposta @mikeserv subestimada . No entanto, neste caso, precisamos usar muitos head
s, então while
loop é introduzido e um pouco de ajustes com descritores de arquivos para passar para head
input de ambos os arquivos (arquivo String.txt
como principal arquivo para processar e linhas de length.txt
como um argumento para a opção -c
). A idéia é que o benefício na velocidade deve vir da necessidade de não buscar o String.txt
sempre que um comando como head
ou cut
for chamado. O echo
é apenas para imprimir nova linha após cada iteração.
O quanto é mais rápido (se houver) e a adição de >Entry_i
entre linhas é deixada como um exercício.