Tengo que trazar con Gnuplot los datos contenidos en 3 archivos CSV.
Comúnmente , Utilizo el siguiente código para trazar desde 2 archivos 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
Los CSV están en tres directorios diferentes. Los datos comienzan en la fila 8 y debo sacar los caracteres "
y ,
y ordenar los datos por la columna 19.
No sé cómo extender este código para pegar 3 CSV diferentes haciendo lo mismo, sort
, tail -n+8
y tr
comandos, y obtenga un archivo .txt
final con el resultado.
Respuesta
No estoy seguro de cómo juega Gnuplot en esto específicamente, pero si «estás buscando una manera de tail
varios archivos, puede hacerlo simplemente pasando sus nombres en la línea de comando.
El único problema es que tail
separará las salidas con un encabezado para facilitar la visualización humana a menos que agregue la opción -q
:
-q, --quiet, --silent never output headers giving file names
Hasta donde puedo ver, puede omitir las sustituciones del proceso y múltiples (r e) ordena simplemente hacer
tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19
sed -n -e '8,470p'
, pero no sé cómo cambiar tu solución. Creo que el problema es que necesito esta selección de rango en solo uno de los tres archivos.tail -q -n+8 file1 <(head -n 470 file2) file3
head -n
hasta alguna fila. ¿Puedo escribir algo comotail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5
?