2012-06-28 11 views

Respuesta

6

El siguiente comando se llevará a los dos archivos y agruparlos en un solo

cat file1.txt file2.txt > file3.txt; mv file3.txt file2.txt 
+1

buena llamada, no pensé en el hecho de que se está escribiendo a sí mismo. Un archivo intermediario entonces. y luego mv. ajustando la respuesta para adaptarse a –

0

La forma de escribir el archivo es como 1). añadir al final del archivo o 2). reescribe ese archivo.

Si desea colocar el contenido en file1.txt antes del archivo2.txt, me temo que debe volver a escribir la multa combinada.

5

Usted puede hacer esto en una tubería usando sponge de moreutils:

cat file1.txt file2.txt | sponge file2.txt 
2

Otra forma usando sed de GNU:

sed -i -e '1rfile1.txt' -e '1{h;d}' -e '2{x;G}' file2.txt 

Es decir:

  • En la línea 1, anexe el contenido del archivo file1.txt
  • En la línea 1, copia espacio patrón para mantener el espacio y eliminar espacio de patrones
  • En la línea 2, intercambiar el contenido de los espacios de bodega y el patrón, y anexar el espacio de la bodega de espacio de patrones

La razón es un poco complicado es que el comando r agrega contenido, y la línea 0 no es direccionable, por lo que tenemos que hacerlo en la línea 1, moviendo el contenido de la línea original fuera del camino y luego devolviéndolo después del contenido de el archivo está anexado

+0

¿hay un comando similar para la versión OSX de sed? – Joey

+0

macos: puedes instalar gsed (macports, probablemente homebrew también). Dicho esto, terminé con solo los contenidos del archivo1, el contenido del archivo2 se perdió. –

Cuestiones relacionadas