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
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.tail -q -n+8 file1 <(head -n 470 file2) file3
head -n
fino a qualche riga. Posso scrivere qualcosa cometail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5
?