J'aimerais faire ce qui suit en utilisant le script shell :(pour simplifier, j'utilise les mêmes données pour INPUT. Dans le cas réel, les données changent avec l'étiquette de boucle jj)
#!/bin/sh
for jj in `seq 100`; do
cat INPUT.file >> OUTPUT.file
done
Cependant, cela est très inefficace car l'ouverture et la fermeture du fichier sont dans la boucle. Lorsque la taille du fichier INPUT.file est importante, ce code sera très lent. Je me demande donc s'il existe un moyen d'avoir/créer un tampon comme créer une variable pré-allouée en C.
Réponse acceptée :
Grâce à la réponse de Stéphane Chazelas à "Pourquoi il y a une telle différence de temps d'exécution entre echo et cat ?", la réponse de muru peut être un peu améliorée en appelant cat
une seule fois (cependant, cette "petite" quantité peut devenir beaucoup pour le Big Data et les nombreuses itérations de boucle ; sur mon système, ce script prend environ 75 % du temps que prend le script ayant une boucle) :
#!/bin/sh
yes INPUT.file | head -100 | xargs cat >> OUTPUT.file