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 

Komentarze

  • Dziękuję. Twój kod jest prosty i działa dobrze. Chciałbym zapytać, jak mogę wybrać zakres wierszy w drugim pliku, na przykład od 8 do 470 wierszy. Mogę użyć 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.
  • @ user1993416 prawdopodobnie najprostszą modyfikacją będzie tail -q -n+8 file1 <(head -n 470 file2) file3
  • Wreszcie moje wyniki są w 5 plikach i 2 z nich, muszę dopisać head -n do jakiegoś wiersza. Czy mogę napisać coś takiego jak tail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5?
  • Wysłałem nowe pytanie z wklejeniem 5 plików. Pozdrawiam.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *