Ik moet met Gnuplot de gegevens in 3 CSV-bestanden plotten.
Gewoonlijk , Gebruik ik de volgende code om uit 2 CSV-bestanden te plotten:
$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
De CSVs staan in drie verschillende mappen. De gegevens beginnen bij rij 8 en ik moet de tekens "
en ,
verwijderen en de gegevens sorteren op kolom 19.
Ik weet niet hoe ik deze code moet uitbreiden om 3 verschillende CSV “s te plakken en hetzelfde doen, sort
, tail -n+8
en tr
commandos, en ontvang een laatste .txt
bestand met het resultaat.
Antwoord
Ik “weet niet zeker hoe Gnuplot hier specifiek in speelt, maar als je” op zoek bent naar een manier om tail
meerdere bestanden te kunnen dit eenvoudig doen door hun namen op de opdrachtregel door te geven.
Het enige probleem is dat tail
de uitgangen zal scheiden met een koptekst voor een betere menselijke weergave, tenzij u voeg de -q
optie toe:
-q, --quiet, --silent never output headers giving file names
Voor zover ik kan zien, kun je de procesvervangingen overslaan en meerdere (r e) sorteert gewoon
tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19
sed -n -e '8,470p'
kunnen gebruiken, maar ik weet niet hoe ik je oplossing moet veranderen. Ik denk dat het probleem is dat ik deze bereikselectie in slechts een van de drie bestanden nodig heb.tail -q -n+8 file1 <(head -n 470 file2) file3
head -n
tot een rij maken. Kan ik iets schrijven alstail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5
?