¿Cómo puedo ordenar el archivo por la segunda columna de la terminal? El contenido del archivo es:
Nome Note
------------
Mehdi 0
Sunday 20
Others 10
Shnou 5
Usando sort -t' ' -nk2
no me esta dando el resultado correcto. Además, ¿cómo puedo asegurarme de que el contenido del archivo permanezca ordenado?
Respuesta aceptada:
Creo que lo que buscas es algo como esto:
Método n.° 1:usando cabeza y cola
$ (head -n 2 sample.txt; tail -n +3 sample.txt | sort -t' ' -nk2) > a.tmp && mv a.tmp sample.txt
Nome Note
------------
Mehdi 0
Shnou 5
Others 10
Sunday 20
Esto toma la primera línea del archivo de texto, luego sigue todo después de las primeras 2 líneas que luego se ordenan.
Método #2:solo usando la cabeza
$ (head -n 2; sort -t' ' -nk2) < sample.txt > a.tmp && mv a.tmp sample.txt
Nome Note
------------
Mehdi 0
Shnou 5
Others 10
Sunday 20
Toma el archivo de texto como entrada, muestra solo la primera línea, ordena el resto.
Por lo general, no es una buena idea editar archivos en su lugar. Es posible, pero es mejor usar un archivo intermedio.
Método #3:Hacer #2 sin un archivo intermedio
Robando la idea de @StephaneChazelas, podría hacer lo siguiente usando la notación "1<>" para abrir un archivo para lectura y escritura, y las mejoras que sugirió con sort
comando.
$ (head -n 2; sort -nk2) < sample.txt 1<> sample.txt
Nome Note
------------
Mehdi 0
Shnou 5
Others 10
Sunday 20