Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

380
Views
ordenar en Linux, seleccionar la última línea, canalizar a un nuevo archivo

Tengo una serie de varios archivos. Me gustaría ordenar estos archivos, seleccionar la línea inferior de cada uno y canalizar esas líneas en un nuevo archivo único.

Mis archivos se ven así:

 1, 100, 2.5 2, 100, 3.3 3, 100, 5.1 4, 100, 1.2

Todos estos archivos se denominan 51_Sur_extracted_data.csv

Los archivos se alojan en directorios principales de la siguiente manera:

Track_0001/output_dfsu/51_Sur_datos_extraídos.csv Track_0002/output_dfsu/51_Sur_datos_extraídos.csv

Así que me gustaría ordenar todos los archivos csv en la tercera columna, extraer la última línea y colocarla en un nuevo archivo de resumen. Básicamente, el objetivo es producir un archivo que tenga los valores máximos de la columna tres en todos los directorios principales. Idealmente, también me gustaría agregar una columna en el archivo de salida que contenga el nombre del directorio principal (Track_0002).

Tengo el tipo resuelto, pero el resto me está resultando un poco problemático. Por ejemplo, ¿puedo ordenar todos los archivos csv al mismo tiempo y escribir la salida en nuevos archivos (ejemplo 51_Sur_extracted_data_sort.csv)? ¿Entonces puedo grep la última línea y canalizarla a un nuevo archivo?

 sort -t"," -k3,3g filename

gracias

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

SI desea la última línea de cualquier comando dado, use tail .

Así que para ti, harías esto:

 sort -t"," -k3,3g filename | tail -n1 > newfilename
over 4 years ago · Santiago Trujillo Report

0

Yo haría algo como esto:

 for a in */*/*.csv do dname="$(basename "$(dirname "$a")")" echo -e "$dname\t$(sort -t"," -k3,3g "$a" | tail -n 1)" done

En mis archivos de prueba devolvió:

 output_abcd 3, 100, 9.1 output_bcde 3, 100, 5.1 output_cdef 3, 100, 5.1 output_abcd 3, 100, 5.1 output_bcde 3, 100, 5.1 output_cdef 3, 100, 5.1 output_abcd 3, 100, 5.1 output_bcde 3, 100, 5.1 output_cdef 1, 100, 7.5 output_abcd 3, 100, 5.1 output_bcde 3, 100, 5.1 output_cdef 3, 100, 5.1 output_abcd 3, 100, 5.1 output_bcde 3, 100, 5.1 output_cdef 3, 100, 5.1 output_abcd 3, 100, 5.1 output_bcde 3, 100, 5.1 output_cdef 3, 100, 5.1 output_abcd 3, 100, 5.1 output_bcde 2, 100, 42.3 output_cdef 3, 100, 5.1 output_abcd 3, 100, 5.1 output_bcde 3, 100, 5.1 output_cdef 3, 100, 5.2 output_abcd 3, 100, 5.1 output_bcde 3, 100, 5.1 output_cdef 3, 100, 5.1

Sí, mis datos de entrada son un poco aburridos. Por supuesto, puedes ordenar el resultado final nuevamente , pero lo dejaré a tu imaginación (ya tenías ese paso) :)

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!