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 

Comentarios

  • Gracias. Su código es simple y funciona bien. Me gustaría preguntarle cómo podría seleccionar un rango de filas en el segundo archivo, por ejemplo, de la fila 8 a la 470. Podría usar 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.
  • @ user1993416 probablemente la modificación más simple sería tail -q -n+8 file1 <(head -n 470 file2) file3
  • Finalmente, mis resultados están en 5 archivos y 2 de ellos, tengo que hacer el head -n hasta alguna fila. ¿Puedo escribir algo como tail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5?
  • He publicado una nueva pregunta con el pegado de los 5 archivos. Saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *