Linux: copiare il contenuto di un file

Messaggioda robbstark » 02/02/2012, 17:30

Ho una domanda banalissima, ma proprio non riesco a ricordarmi come si fa, ne' a trovarlo in rete.
Semplicemente voglio che il contenuto di un file venga aggiunto al fondo di un'altro file. Qual e' il comando da digitare dal terminale?
robbstark
Junior Member
Junior Member
 
Messaggi: 495
Iscritto il: 04/11/2008, 21:28

Re: Linux: copiare il contenuto di un file

Messaggioda lorven » 02/02/2012, 21:12

Il comando cat, tra le altre cose, fa quello che chiedi:
Codice: Seleziona tutto
cat f1 >> f2

accoda al file f2 il contenuto del file f1.
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggi: 324
Iscritto il: 06/12/2005, 20:55

Re: Linux: copiare il contenuto di un file

Messaggioda robbstark » 02/02/2012, 22:48

Grazie. Sono riuscito a fare una cosa del genere con il comando sort. Comunque che mi sono imbattuto in un altro tipo di problema, anzi 2:
Ho creato un file eseguibile che applica un programma su dei file di dati (fits, ma non è rilevante), e produce un output su un file. Il problema è che per ogni file letto, il file di output viene sovrascritto, mentre a me serve conservare i dati. Quindi ho impostato in modo tale che il contenuto del file di output venga sovrascritto su un altro file, che conterrà tutti gli output.
Il problema è che a quanto pare i processi non si aspettano e si intersecano, col risultato che viene fuori un file con i risultati molto molto confuso. C'è un modo semplice per evitare questo?
Inoltre c'è un modo per fare copiare solo alcune righe di un file?
robbstark
Junior Member
Junior Member
 
Messaggi: 495
Iscritto il: 04/11/2008, 21:28

Re: Linux: copiare il contenuto di un file

Messaggioda lorven » 03/02/2012, 12:17

Se ho compreso quanto ti serve:
1. Per non sovrascrivere un file è necessario aprirlo non in output, ma in append.
Ad esempio, con Linux:
Codice: Seleziona tutto
cat > f1
cancella l'eventuale contenuto precedente di f1, riscrivendo dal primo record;
Codice: Seleziona tutto
cat >> f1
aggiunge al contenuto precedente di f1 altri record.
2. Per copiare da un file solo alcune righe, si possono usare i comandi head e tail.
Ad esempio:
Codice: Seleziona tutto
head -15 f1|tail -6 f1 > f2
pone in f2 le righe da 10 a 15 di f1.
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggi: 324
Iscritto il: 06/12/2005, 20:55

Re: Linux: copiare il contenuto di un file

Messaggioda robbstark » 03/02/2012, 15:33

Grazie 1000, questo comando mi serviva proprio.
L'unico problema che resta e' che creando un file exe, che esegue ripetutamente questo e altri comandi, quando lo eseguo non viene rispettato l'ordine dei comandi, col risultato che viene fuori un file molto confuso.
robbstark
Junior Member
Junior Member
 
Messaggi: 495
Iscritto il: 04/11/2008, 21:28

Re: Linux: copiare il contenuto di un file

Messaggioda lorven » 03/02/2012, 19:41

robbstark ha scritto:...
L'unico problema che resta e' che creando un file exe, che esegue ripetutamente questo e altri comandi, quando lo eseguo non viene rispettato l'ordine dei comandi, col risultato che viene fuori un file molto confuso.

Posso ipotizzare errori nell'apertura/chiusura dei file. Ma bisognerebbe dare uno sguardo al codice...
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggi: 324
Iscritto il: 06/12/2005, 20:55

Re: Linux: copiare il contenuto di un file

Messaggioda Raptorista » 07/02/2012, 00:30

Oppure puoi cambiare l'ordine dei comandi, facendo fare prima tutte le scritture su file diversi e poi facendo un grosso cat alla fine.

Oppure, forse ancora migliore come prestazioni [se non parliamo di dimensioni esorbitanti] puoi tenere tutti i risultati in RAM e scrivere il tutto alla fine.

Concordo con Iorven sul fatto che senza vedere come è fatto il sorgente, è molto difficile dire qualcosa di utile.
Un matematico ha scritto:... come mia nonna che vuole da anni il sistema per vincere al lotto e crede che io, in quanto matematico, sia fallito perché non glielo trovo


Immagine
Avatar utente
Raptorista
Moderatore
Moderatore
 
Messaggi: 2334
Iscritto il: 28/09/2008, 19:58

Re: Linux: copiare il contenuto di un file

Messaggioda robbstark » 07/02/2012, 19:09

Grazie a entrambi, ho risolto oggi. Alla fine il problema non l'ho capito benissimo, ma pare che fosse la combinazione di comandi head e tail, che a volte fa cosa voglio e a volte no.
robbstark
Junior Member
Junior Member
 
Messaggi: 495
Iscritto il: 04/11/2008, 21:28


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti