Tengo un archivo de dos columnas y n
número de filas.
la columna 1 contiene names
y 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 name
de la persona más joven junto con la name
segunda persona más joven y así sucesivamente ...
Cualquier sugerencia para un shell de línea única o script bash.
Respuestas:
Puedes usar el
sort
comando :Por ejemplo:
fuente
-h
lugar de-n
ordenará los valores legibles por humanos como2G
o3K
así como los números separados por comas, por ejemplo1,234.5
LC_ALL=C
para 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 FILE
Solución:
sort -k 2 -n filename
escrito más detalladamente como:
sort --key 2 --numeric-sort filename
Ejemplo:
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
-k5
se 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
-t
era 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