Ich möchte Folgendes mit Shell-Skript tun:(Der Einfachheit halber verwende ich dieselben Daten für INPUT. Im wirklichen Fall ändern sich die Daten mit dem Loop-Label jj)
#!/bin/sh
for jj in `seq 100`; do
cat INPUT.file >> OUTPUT.file
done
Dies ist jedoch sehr ineffizient, da das Öffnen und Schließen der Datei in der Schleife erfolgt. Wenn die Größe der Datei INPUT.file groß ist, wird dieser Code sehr langsam sein. Ich frage mich also, ob es eine Möglichkeit gibt, einen Puffer zu haben/zu erstellen, wie eine vorab zugewiesene Variable in C zu erstellen.
Akzeptierte Antwort:
Dank der Antwort von Stéphane Chazelas auf „Warum gibt es einen solchen Unterschied in der Ausführungszeit von echo und cat?“ kann die Antwort von muru durch den Aufruf von cat
etwas verbessert werden nur einmal (jedoch kann diese „kleine“ Menge für große Datenmengen und zahlreiche Schleifeniterationen viel werden; auf meinem System benötigt dieses Skript ~75 % der Zeit, die das Schleifen enthaltende Skript benötigt):
#!/bin/sh
yes INPUT.file | head -100 | xargs cat >> OUTPUT.file