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 

Komentáře

  • Děkuji. Váš kód je jednoduchý a funguje dobře. Chtěl bych se vás zeptat, jak mohu vybrat řadu řádků ve druhém souboru, například od 8 řádků po 470 řádků. Mohl bych použít 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ů.
  • @ user1993416 pravděpodobně nejjednodušší modifikace bude tail -q -n+8 file1 <(head -n 470 file2) file3
  • Nakonec jsou moje výsledky v 5 souborech a ve 2 z nich musím head -n vytvořit nějaký řádek. Mohu napsat něco jako tail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5?
  • Přidal jsem novou otázku s vložením 5 souborů. S pozdravem.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *