Come faccio ad anteporre i dati da file1.txt a file2.txt?Linux per anteporre i dati da un file all'altro
risposta
Il seguente comando prenderà i due file e fonderli in un unico
cat file1.txt file2.txt > file3.txt; mv file3.txt file2.txt
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.
Si può fare questo in una pipeline utilizzando sponge
da moreutils
:
cat file1.txt file2.txt | sponge file2.txt
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.
c'è un comando simile per la versione OSX di sed? – Joey
macos: è possibile installare gsed (macports, probabilmente anche homebrew). Detto questo, ho finito con il contenuto di file1, il contenuto di file2 è stato perso. –
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 –