Devo tracciare con Gnuplot i dati contenuti in 3 file CSV.

Comunemente , Utilizzo il seguente codice per tracciare da 2 file CSV:

$datablock << EOD `cat ../Q1a/sim_Q1.csv <(tail -n+8 ../Q1b/sim_Q1.csv | tr ""," " " | sort -nk19 )| tail -n+8 | tr ""," " " | sort -nk19 > ../Q1a/Q6_ressult.txt` EOD set print "|bash -x" print $datablock set print 

I CSV si trovano in tre directory diverse. I dati iniziano alla riga 8 e devo estrarre i caratteri " e , e ordinare i dati in base alla colonna 19.

Non so come estendere questo codice per incollare 3 diversi CSV che fanno lo stesso, sort, tail -n+8 e tr comandi e ottieni un file .txt finale con il risultato.

Risposta

Non sono sicuro di come Gnuplot giochi in questo specifico, ma se stai cercando un modo per tail più file, può farlo semplicemente passando i loro nomi sulla riga di comando.

Lunico problema è che tail separerà gli output con unintestazione per una più facile visualizzazione umana a meno che tu non aggiungi lopzione -q:

 -q, --quiet, --silent never output headers giving file names 

Per quanto posso vedere, puoi saltare le sostituzioni del processo e più (r e) gli ordinamenti fanno semplicemente

tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19 

Commenti

  • Grazie. Il tuo codice è semplice e funziona bene. Vorrei chiederti come posso selezionare un intervallo di righe nel secondo file, ad esempio dalla riga 8 alla riga 470. Potrei usare sed -n -e '8,470p', ma non so come cambiare la tua soluzione. Penso che il problema sia che ho bisogno di questa selezione dellintervallo solo in uno dei tre file.
  • @ user1993416 probabilmente la modifica più semplice sarebbe tail -q -n+8 file1 <(head -n 470 file2) file3
  • Infine, i miei risultati sono in 5 file e 2 di essi, devo creare head -n fino a qualche riga. Posso scrivere qualcosa come tail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5?
  • Ho postato una nuova domanda con la pasta dei 5 file. Saluti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *