Mi piacerebbe fare quanto segue usando lo script della shell:(per semplicità, uso gli stessi dati per INPUT. Nel caso reale, i dati cambiano con l'etichetta del ciclo jj)
#!/bin/sh
for jj in `seq 100`; do
cat INPUT.file >> OUTPUT.file
done
Tuttavia, questo è molto inefficiente poiché l'apertura e la chiusura del file sono nel ciclo. Quando la dimensione del file INPUT.file è grande, questo codice sarà molto lento. Quindi mi chiedo se c'è un modo per avere/creare un buffer come creare una variabile preallocata in C.
Risposta accettata:
Grazie alla risposta di Stéphane Chazelas a "Perché c'è una tale differenza nel tempo di esecuzione di echo e cat?", la risposta di muru potrebbe essere leggermente migliorata chiamando cat
solo una volta (tuttavia, questo "piccolo" importo può diventare molto per i big data e numerose iterazioni di loop; sul mio sistema, questo script impiega circa il 75% del tempo impiegato dallo script con loop):
#!/bin/sh
yes INPUT.file | head -100 | xargs cat >> OUTPUT.file