Je dois tracer avec Gnuplot les données contenues dans 3 fichiers CSV.
Communément , Jutilise le code suivant pour tracer à partir de 2 fichiers 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
Les CSV sont dans trois répertoires différents. Les données commencent à la ligne 8 et je dois retirer les caractères "
et ,
et trier les données par colonne 19.
Je ne sais pas comment étendre ce code pour coller 3 CSV différents faisant de même, sort
, tail -n+8
et tr
, et obtenez un fichier .txt
final avec le résultat.
Réponse
Je ne sais pas comment Gnuplot y joue spécifiquement, mais si vous « cherchez un moyen de tail
plusieurs fichiers, vous peut le faire simplement en passant leurs noms sur la ligne de commande.
Le seul problème est que tail
séparera les sorties avec un en-tête pour une visualisation plus facile à moins que vous ajoutez loption -q
:
-q, --quiet, --silent never output headers giving file names
Pour autant que je sache, vous pouvez ignorer les substitutions de processus et les multiples (r e) les tris font simplement
tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19
sed -n -e '8,470p'
, mais je ne sais pas comment changer votre solution. Je pense que le problème est que jai besoin de cette sélection de plage dans un seul des trois fichiers.tail -q -n+8 file1 <(head -n 470 file2) file3
head -n
jusquà une ligne. Puis-je écrire quelque chose commetail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5
?