A 3 CSV-fájlban található adatokat a Gnuplot-tal kell ábrázolnom.
Gyakran , A következő kódot használom 2 CSV-fájl ábrázolásához:
$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
A CSV-k három különböző könyvtárban vannak. Az adatok a 8. sornál kezdődnek, és ki kell vennem a "
és ,
karaktereket, és az adatokat a 19. oszlop szerint kell rendezni.
Nem tudom, hogyan lehet kibővíteni ezt a kódot, hogy beillesszünk 3 különböző CSV-t, amelyek ugyanazt teszik, sort
, tail -n+8
és tr
parancsokat, és kap egy végső .txt
fájlt az eredménnyel.
Válasz
Nem vagyok biztos benne, hogy a Gnuplot hogyan játszik ebben konkrétan, de ha tail
fájlok keresésének módját keresi, akkor egyszerűen megteheti úgy, hogy átadja a nevüket a parancssorban.
Az egyetlen gotcha, hogy a tail
elválasztja a kimeneteket egy fejléccel az emberi könnyebb megtekintés érdekében, hacsak nem adja hozzá a -q
opciót:
-q, --quiet, --silent never output headers giving file names
Tehát amennyire látom, kihagyhatja a folyamathelyettesítéseket és a többszöröseket (r e) a rendezés egyszerűen megteszi
tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19
sed -n -e '8,470p'
alkalmazást, de nem tudom, hogyan változtassam meg a megoldásodat. Szerintem a probléma az, hogy a három fájl közül csak az egyikre van szükségem erre a tartományra.tail -q -n+8 file1 <(head -n 470 file2) file3
head -n
-t egy sorig. Írhatok hasonlót:tail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5
?