Muszę wykreślić za pomocą Gnuplot dane zawarte w 3 plikach CSV.
Zwykle , Używam następującego kodu do kreślenia z 2 plików CSV:
$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
Pliki CSV znajdują się w trzech różnych katalogach. Dane zaczynają się w wierszu 8 i muszę usunąć znaki "
i ,
i posortować dane według kolumny 19.
Nie wiem, jak rozszerzyć ten kod, aby wkleić 3 różne pliki CSV robiące to samo, sort
, tail -n+8
i tr
poleceń i uzyskaj ostateczny plik .txt
z wynikiem.
Odpowiedź
Nie jestem pewien, w jaki sposób Gnuplot gra w to konkretnie, ale jeśli „szukasz sposobu na tail
wiele plików, można to zrobić po prostu przekazując ich nazwy w wierszu poleceń.
Jedynym problemem jest to, że tail
oddzieli wyjścia nagłówkiem dla łatwiejszego przeglądania, chyba że dodaj opcję -q
:
-q, --quiet, --silent never output headers giving file names
O ile widzę, możesz pominąć podstawianie procesów i wielokrotność (r e) sortowanie po prostu wykonaj
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 nie wiem, jak zmienić twoje rozwiązanie. Myślę, że problem polega na tym, że potrzebuję tego zakresu wyboru tylko w jednym z trzech plików.tail -q -n+8 file1 <(head -n 470 file2) file3
head -n
do jakiegoś wiersza. Czy mogę napisać coś takiego jaktail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5
?