Jag måste plotta data med Gnuplot i 3 CSV-filer.
Vanligt , Jag använder följande kod för att plotta från två 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-filerna finns i tre olika kataloger. Data börjar vid rad 8 och jag måste ta ut "
och ,
tecken och sortera data efter kolumn 19.
Jag vet inte hur jag ska utöka den här koden för att klistra in 3 olika CSV-filer som gör samma sak, sort
, tail -n+8
och tr
-kommandon och få en slutlig .txt
-fil med resultatet.
Svar
Jag är inte säker på hur Gnuplot spelar in i detta specifikt, men om du letar efter ett sätt att tail
flera filer du kan göra det helt enkelt genom att skicka sina namn på kommandoraden.
Den enda gotcha är att tail
separerar utgångarna med en rubrik för enklare mänsklig visning om du inte lägg till alternativet -q
:
-q, --quiet, --silent never output headers giving file names
Så vitt jag kan se kan du hoppa över processbyten och multipel (r e) sorterar helt 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 jag vet inte hur jag ska ändra din lösning. Jag tror att problemet är att jag behöver det här valet av intervall i bara en av de tre filerna.tail -q -n+8 file1 <(head -n 470 file2) file3
head -n
tills någon rad. Kan jag skriva något somtail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5
?