Ich muss die in 3 CSV-Dateien enthaltenen Daten mit Gnuplot zeichnen.

Häufig Ich verwende den folgenden Code, um aus 2 CSV-Dateien zu zeichnen:

$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 

Die CSVs befinden sich in drei verschiedenen Verzeichnissen. Die Daten beginnen in Zeile 8, und ich muss die Zeichen " und , entfernen und die Daten nach Spalte 19 sortieren.

Ich weiß nicht, wie ich diesen Code erweitern soll, um 3 verschiedene CSVs einzufügen, die dasselbe tun: sort, tail -n+8 und tr Befehle und erhalten eine endgültige .txt -Datei mit dem Ergebnis.

Antwort

Ich bin mir nicht sicher, wie Gnuplot dies speziell spielt, aber wenn Sie nach einer Möglichkeit suchen, tail mehrere Dateien zu erstellen Sie können dies einfach tun, indem Sie ihre Namen in der Befehlszeile übergeben.

Das einzige Problem ist, dass tail die Ausgaben mit einem Header trennt, um die Anzeige durch den Menschen zu erleichtern, es sei denn, Sie Fügen Sie die Option -q hinzu:

 -q, --quiet, --silent never output headers giving file names 

Soweit ich sehen kann, können Sie die Prozessersetzungen und mehrere (r e) Sortieren einfach

tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19 

Kommentare

  • Vielen Dank. Ihr Code ist einfach und funktioniert gut. Ich möchte Sie fragen, wie ich einen Zeilenbereich in der zweiten Datei auswählen kann, beispielsweise von 8 bis 470 Zeilen. Ich könnte sed -n -e '8,470p' verwenden, weiß aber nicht, wie ich Ihre Lösung ändern soll. Ich denke, das Problem ist, dass ich diese Bereichsauswahl in nur einer der drei Dateien benötige.
  • @ user1993416 Die wahrscheinlich einfachste Änderung wäre tail -q -n+8 file1 <(head -n 470 file2) file3
  • Schließlich sind meine Ergebnisse in 5 Dateien und 2 davon, ich muss die head -n bis zu einer Zeile machen. Kann ich so etwas wie tail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5 schreiben?
  • Ich habe eine neue Frage mit dem Einfügen der 5 Dateien gestellt. Grüße.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.