2012-06-28 12 views

risposta

6

Il seguente comando prenderà i due file e fonderli in un unico

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

buona chiamata, non ha pensato al fatto che è stato scritto a se stesso. Un file intermedio quindi. e poi mv. aggiustando la risposta per soddisfare –

0

La via della scrittura del file è come 1). append alla fine del file o 2). riscrivi quel file.

Se si desidera mettere il contenuto in file1.txt prima di file2.txt, ho paura di dover riscrivere l'ammenda combinata.

5

Si può fare questo in una pipeline utilizzando sponge da moreutils:

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

Un altro modo utilizzando GNU sed:

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

Cioè:

  • On line 1, aggiungere il contenuto del file file1.txt
  • On line 1, copia spazio modello per contenere lo spazio ed eliminare lo spazio modello
  • On line 2, scambiare il contenuto degli spazi di attesa e modello, e aggiungere lo spazio stiva allo spazio modello

Il motivo è un po 'complicato è che il comando r aggiunge il contenuto, e la linea 0 non è indirizzabile, quindi dobbiamo farlo sulla linea 1, spostando il contenuto della linea originale e poi riportandolo dopo il contenuto di il file viene aggiunto.

+0

c'è un comando simile per la versione OSX di sed? – Joey

+0

macos: è possibile installare gsed (macports, probabilmente anche homebrew). Detto questo, ho finito con il contenuto di file1, il contenuto di file2 è stato perso. –

Problemi correlati