comando sort en unix con ordenamiento numérico


10

Tengo el archivo 1:

"$lvl=57"
"$lvl=20"
"$lvl=48"
"$lvl=17"
"$lvl=58"

File2 quiero:

"$lvl=17"
"$lvl=20"
"$lvl=48"
"$lvl=57"
"$lvl=58"

Básicamente, numéricamente tipo de archivo1.


Cuando ejecuto un Unix simple sorten su File1, sin opciones, obtengo su File2. ¿Qué haces diferente? ¿Qué estás dejando fuera de esta pregunta?
Scott

Respuestas:


17

Me gusta -V --version-sort: se comporta muy bien para muchas situaciones mezclando cadenas y números

sort -V

Yo uso esta opción muy a menudo ...

En alguna dirección, ls -vpara ordenar por versión ls.


10

Debe indicar sort -nque ordene la parte después de =:

sort -t = -k 2n

Hace poco estuve mirando esto ^^. Pero una más P. ¿Qué hacer -k2n? ¿Se relaciona eso con la ordenación numérica? gracias.
αғsнιη

2
@KasiyA -kdefine una clave de clasificación. Vea la página del manual para más detalles. -k2ndefine una clave de clasificación que comienza en el segundo campo y termina al final de la línea y la convierte en una clave de clasificación numérica.
Stéphane Chazelas

0

use sort:

sort -n file1 > file2

-n, --numeric-sort
compare según el valor numérico de la cadena

 sort -g file1 > file 2

-g, --general-numeric-sort


3
No, todas esas líneas tienen la misma clasificación sort -nya que no comienzan con un número. La razón por la que los ordena es el último recurso de línea completa (léxico, no numérico) realizado para líneas con la misma clasificación. Eso ordenaría "$lvl=17"antes "$lvl=2".
Stéphane Chazelas

@ StéphaneChazelas gracias por señalar.
Hackaholic

Parafraseando, -ny -gson redundantes aquí ya que la entrada no es numérica. Entonces, esta respuesta es engañosa, de ahí el voto negativo (también tenga en cuenta que -gy las opciones largas son específicas de GNU).
Stéphane Chazelas

pero -g es una buena clasificación numérica general
Hackaholic

Eso sigue siendo para ordenar valores numéricos, la diferencia -nes que no está limitado a enteros decimales. Eso todavía se ordenaría "$lvl=17"antes "$lvl=2"como parte de la clasificación de último recurso.
Stéphane Chazelas

0

Descubrí que, solo corres sort -h, funcionará. Lo llaman --human-numberic-sort.

sort -h file1 > file2

-1

sort -nes lo que quieres usar. Se ordena a medida que ordenamos los números.sort -k 2 -n file1


2
Pero el OP quiere ordenar en orden ascendente, que es el valor predeterminado. ¿Por qué estás sugiriendo el orden inverso?
G-Man dice 'Reincorporar a Monica' el

lo anterior es correcto cuando los campos están separados por tabulaciones o espacios y no funcionarán en el caso de OP.
αғsнιη
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.