Jeg må plotte dataene i 3 CSV-filer med Gnuplot.
Vanligvis , Jeg bruker følgende kode for å plotte fra 2 CSV-filer:
$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-ene er i tre forskjellige kataloger. Dataene starter på rad 8, og jeg må ta ut "
og ,
-tegnene, og sortere dataene etter kolonne 19.
Jeg vet ikke hvordan jeg skal utvide denne koden til å lime inn 3 forskjellige CSV-er som gjør det samme, sort
, tail -n+8
og tr
kommandoer, og få en endelig .txt
fil med resultatet.
Svar
Jeg er ikke sikker på hvordan Gnuplot spiller inn i dette spesifikt, men hvis du leter etter en måte å tail
flere filer til deg kan gjøre det ganske enkelt ved å sende navnene sine på kommandolinjen.
Den eneste gotchaen er at tail
vil skille utgangene med en overskrift for lettere menneskelig visning med mindre du legg til -q
alternativet:
-q, --quiet, --silent never output headers giving file names
Så vidt jeg kan se, kan du hoppe over prosessubstitusjoner og multiple (r e) sorterer ganske enkelt
tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19
sed -n -e '8,470p'
, men jeg vet ikke hvordan jeg skal endre løsningen din. Jeg tror problemet er at jeg trenger dette utvalg av utvalg i bare en av de tre filene.tail -q -n+8 file1 <(head -n 470 file2) file3
head -n
til noen rad. Kan jeg skrive noe somtail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5
?