Musím s Gnuplotem vykreslit data obsažená ve 3 souborech CSV.
Obvykle , K vykreslení ze 2 souborů CSV používám následující kód:
$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
Soubory CSV jsou ve třech různých adresářích. Data začínají na řádku 8 a musím vyjmout znaky "
a ,
a seřadit data podle sloupce 19.
Nevím, jak rozšířit tento kód a vložit 3 různé soubory CSV, které dělají totéž, sort
, tail -n+8
a tr
příkazy a získáte konečný .txt
soubor s výsledkem.
Odpovědět
Nejsem si jistý, jak na to konkrétně hraje Gnuplot, ale pokud hledáte způsob, jak tail
více souborů, můžete tak učinit jednoduše předáním jejich jmen na příkazový řádek.
Jediné, co je, je to, že tail
oddělí výstupy záhlaví pro snazší prohlížení člověkem, pokud přidat možnost -q
:
-q, --quiet, --silent never output headers giving file names
Pokud tedy vidím, můžete přeskočit substituce procesu a více (r e) třídí jednoduše
tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19
sed -n -e '8,470p'
, ale nevím, jak změnit vaše řešení. Myslím, že problém je v tom, že potřebuji tento výběr rozsahu pouze v jednom ze tří souborů.tail -q -n+8 file1 <(head -n 470 file2) file3
head -n
vytvořit nějaký řádek. Mohu napsat něco jakotail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5
?