2010-06-24 26 views
8

Me gustaría reordenar un archivo completo por orden de tiempo ascendente.¿Cómo puedo reordenar un archivo por orden ascendente (columna)?

archivo.txt se ve así:

a 12.24 text 

a 1.45 text 

b 5.12 text 

me gustaría que se vea como esto:

a 1.45 text 

b 5.12 text 

a 12.24 text 
+0

¿Por qué usar awk cuando puedes usar Python? Además, ¿es este un formato de 24 horas? –

+1

Prueba este one-liner en Python 2.6: abre (r'temp2.txt ',' w '). Writelines (ordenado (abre (r'temp.txt', 'r'). Readlines(), clave = línea lambda : float (line.split() [1]))) –

Respuesta

7

Uso del programa sort Linux, no awk. Precisamente:

sort -n -k 2 <filename> 
+1

Para aclarar, la diferencia entre -n y -g se explica aquí: http://stackoverflow.com/questions/1255782/whats-the-difference-between- general-numérico-sort-and-numic-sort-options-i. – mbq

+0

Tenga en cuenta que esto supone que los tiempos están en formato de 24 horas. – Costa

15

El comando sort puede satisfacer sus necesidades mejor que awk.

# sort -gk 2 test.txt 
a 1.45 text 
b 5.12 text 
a 12.24 text 

-g los compara como números en lugar de cadenas. Y -k 2 se ordena en la segunda columna.

+0

Tenga en cuenta que esto supone que los tiempos están en formato de 24 horas. – Costa

+0

Si dos filas pueden tener el mismo tiempo, '-k2' recurrirá a la comparación de líneas enteras para ordenarlas. Agregar un '-s' apagaría esta peculiaridad. – hemflit

Cuestiones relacionadas