¿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