Tomé un libro de archivos de texto sin formato del Proyecto Gutenberg (alrededor de 0,5 MB) que quiero concatenar consigo mismo nveces para generar un archivo de texto grande en el que pueda comparar algunos algoritmos. ¿Hay algún comando de Linux que pueda usar para lograr esto? catSuena ideal, pero no parece jugar demasiado bien con la concatenación de un archivo sobre sí mismo, además no aborda directamente los ntiempos parte de la pregunta.
linux
concatenation
Bryce Thomas
fuente
fuente

Respuestas:
Dos partes para esto, para mí, primero, usar cat para generar el archivo de texto en la salida estándar, y usar append para agregarlo a otro archivo, por ejemplo foo.txt >> bar.txt agregará foo.txt a bar.txt
luego ejecútalo n veces con
reemplazando n en ese comando con su número
debería funcionar, donde n es tu número
Si usa csh, está el comando 'repetir'.
repito partes relacionadas de la respuesta se copian desde aquí , y lo probé en un sistema ubuntu 11.04 en el shell bash predeterminado.
fuente
{1..12}correrá correctamente el cuerpo 12 veces.for i in {1..n};do cat foo.txt; done > bar.txtEstoy aburrido, así que aquí hay algunos métodos más sobre cómo concatenar un archivo consigo mismo, principalmente con
headuna muleta. Disculpe si me explico demasiado, solo me gusta decir cosas: PSuponiendo que
Nes el número de autoconcatenaciones que desea hacer y que su archivo tiene un nombrefile.Variables:
Dada una copia de
filellamadofile2,total_repeatses el número de vecesfileque debería agregarsefile2para que sea igual que sifileestuviera concatenado a sí mismoN.Dicho MATH está aquí, más o menos: MATH (esencia)
Es material de informática del primer semestre, pero ha pasado un tiempo desde que hice una prueba de inducción, así que no puedo superarlo ... (también se sabe que esta clase de recursión es así que
2^Loopstambién existe ...)POSIX
Utilizo algunas cosas que no son posix pero no son esenciales. Para mis propósitos:
Oh, solo usé eso. Oh bueno, la sección ya está aquí ...
Métodos
headcon seguimiento de recuento de líneas.Sin archivo temporal, sin gato, ni siquiera demasiadas matemáticas, toda alegría.
teecon MATEMÁTICASAquí
teeestá leyendo,filepero añadiéndole perpetuamente, por lo que seguirá leyendo el archivo repetidamente hasta que loheaddetenga. Y sabemos cuándo detenerlo debido a MATH . El anexo va por la borda, así que utilicé un archivo temporal. También podría recortar el exceso de líneasfile.eval, el señor de la oscuridad!Esto solo se expande
cat file file file ...y lo evalúa. También puedes hacerlo sin el$tmparchivo:El segundo
head"truco"catal poner a un intermediario entre este y la operación de escritura. También podrías engañarcata otrocat, pero eso tiene un comportamiento inconsistente. Prueba esto:sed:Obliga
seda leer todo el archivo como una línea, captura todo y luego lo pega$total_repeatsvarias veces.Por supuesto, esto fallará si tiene caracteres nulos en su archivo. Elige uno que sabes que no está allí.
Eso es todo por ahora muchachos, espero que esta respuesta arbitraria no moleste a nadie. Los probé muchas veces, pero solo soy un usuario de shell de dos años, así que tenlo en cuenta, supongo. Ahora a dormir...
rm $tmpfuente
Ciertamente puedes usar
catpara esto:Para obtener
$ncopias, puede usaryescanalizado enhead -n $n:Poner eso juntos da
fuente