Tengo un archivo de dos columnas y nnúmero de filas.
la columna 1 contiene namesy la columna2 age.
Quiero ordenar el contenido de este archivo en orden ascendente según age(en la segunda columna).
El resultado debería mostrar el namede la persona más joven junto con la namesegunda persona más joven y así sucesivamente ...
Cualquier sugerencia para un shell de línea única o script bash.

Respuestas:
Puedes usar el
sortcomando :Por ejemplo:
fuente
-hlugar de-nordenará los valores legibles por humanos como2Go3Kasí como los números separados por comas, por ejemplo1,234.5LC_ALL=Cpara obtener el orden de clasificación tradicional que utiliza valores de bytes nativos". (para mayúsculas y minúsculas sin-n)sort -t$'\t' -k2 -n FILESolución:
sort -k 2 -n filenameescrito más detalladamente como:
sort --key 2 --numeric-sort filenameEjemplo:
Explicación:
-k # : este argumento especifica la primera columna que se utilizará para ordenar. (tenga en cuenta que la columna aquí se define como un campo delimitado por espacios en blanco; el argumento
-k5se ordenará comenzando con el quinto campo en cada línea, no el quinto carácter en cada línea)-n : esta opción especifica un "orden numérico", lo que significa que la columna debe interpretarse como una fila de números, en lugar de texto.
Más:
Otras opciones comunes incluyen:
Hay otras opciones, pero estas son las más comunes y útiles, que uso con frecuencia.
fuente
-tera un salvavidas real! cuando sus columnas tienen espacios y las columnas difieren según un carácter dado,o una pestañaPara valores separados por tabuladores, se puede usar el siguiente código
-r puede usarse para obtener datos en orden descendente.
-n para ordenación numérica
-k, --key = POS1 [, POS2] donde k es la columna en el archivo
Para el orden descendente a continuación se encuentra el código
fuente
Uso
sort.fuente