Trebuie să trasez cu Gnuplot datele conținute în 3 fișiere CSV.
În mod obișnuit , Folosesc următorul cod pentru a trasa din 2 fișiere 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
CSV-urile sunt în trei directoare diferite. Datele încep la rândul 8 și trebuie să scot caracterele "
și ,
și să sortez datele după coloana 19.
Nu știu cum să extind acest cod pentru a lipi 3 CSV diferite care fac același lucru, sort
, tail -n+8
și tr
și obțineți un fișier final .txt
cu rezultatul.
Răspunde
Nu sunt sigur cum joacă Gnuplot în acest sens, dar dacă căutați o modalitate de a tail
fișiere multiple poate face acest lucru pur și simplu trecând numele lor pe linia de comandă.
Singurul lucru este că tail
va separa ieșirile cu un antet pentru o vizualizare mai ușoară a omului, cu excepția cazului în care adăugați opțiunea -q
:
-q, --quiet, --silent never output headers giving file names
Deci, din câte văd, puteți sări peste substituțiile procesului și multiplele (r e) sortează pur și simplu
tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19
sed -n -e '8,470p'
, dar nu știu cum să vă schimb soluția. Cred că problema este că am nevoie de această selecție a intervalului într-unul dintre cele trei fișiere.tail -q -n+8 file1 <(head -n 470 file2) file3
head -n
până la un rând. Pot scrie ceva de genultail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5
?