Me gustaría hacer lo siguiente usando el script de shell:(para simplificar, uso los mismos datos para INPUT. En el caso real, los datos cambian con la etiqueta de bucle jj)
#!/bin/sh
for jj in `seq 100`; do
cat INPUT.file >> OUTPUT.file
done
Sin embargo, esto es muy ineficiente ya que abrir y cerrar el archivo están en el bucle. Cuando el tamaño del archivo INPUT.file es grande, este código será muy lento. Así que me pregunto si hay una manera de tener/crear un búfer como crear una variable preasignada en C.
Respuesta aceptada:
Gracias a la respuesta de Stéphane Chazelas a "¿Por qué hay tanta diferencia en el tiempo de ejecución de echo y cat?", la respuesta de muru puede mejorarse un poco llamando a cat
solo una vez (sin embargo, esta cantidad "pequeña" puede convertirse en mucho para big data y numerosas iteraciones de bucle; en mi sistema, esta secuencia de comandos tarda ~75 % del tiempo que tarda la secuencia de comandos que tiene un bucle):
#!/bin/sh
yes INPUT.file | head -100 | xargs cat >> OUTPUT.file