Tengo un archivo separado por comas que se ve así:
100,00869184
6492,8361
1234,31
200,04071
Quiero usar sortpara ordenar este archivo numéricamente solo por la primera columna .
Resultado deseado:
100,00869184
200,04071
1234,31
6492,8361
¿Cómo consigo esto usando sort? Parece que las comas están siendo tratadas como miles de separadores en lugar de delimitadores, incluso cuando los llamo así.
Ambos sort -t',' -ny sort -t',' -nk1'dame esto:
1234,31
200,04071
6492,8361
100,00869184
Ordenar por defecto (sin parámetros) o usar sort -t','me da esto:
100,00869184
1234,31
200,04071
6492,8361
Y ordenar por un número sort -nme da esto:
1234,31
200,04071
6492,8361
100,00869184
¿Cómo puedo usar la ordenación para lograr el resultado deseado?
Editado para agregar: Esto es para una operación única para crear una lista ordenada de aproximadamente 7 millones de líneas, por lo que las soluciones alternativas u otros métodos poco ortodoxos son perfectamente aceptables.

-topción de tener un espacio entre-tel personaje y el personajeRespuestas:
Sin duda, esta es una solución sucia, pero descubrí una forma de hacerlo gracias al consejo de @ slhck sobre los entornos locales. Si aparece una mejor respuesta que sería más útil para los demás, ciertamente la aceptaré, ya que esto solo funciona para mi problema específico.
Establecí la configuración regional en español (boliviano) para que las comas se trataran como puntos decimales, luego la clasificación numérica estándar funcionó.
fuente
GNU
sorthace esto por defecto:Versión:
Sin embargo, hay una advertencia: si su clasificación no funciona como se esperaba, entonces
localeprobablemente esté configurado en algo diferente aC. ¿Por qué es esto?localedefine la clasificación e interpretación de letras, números, caracteres decimales, etc.Para verificar esto, solo ingrese
localeen una Terminal. ¿EstáLC_NUMERICconfigurado paraen_US.UTF-8, tal vez? Esto explicaría el orden de clasificación incorrecto. Ajústelo de nuevo aC:Luego, intente su
sortcomando nuevamente. Si desea establecer su globallocaleaC, haga esto con:fuente
localeproblema. Pero, ¿qué haysort --versionpara ti, en realidad?--Los comandos tampoco me han funcionado en el pasado. Revisé la página del manual y no hay una versión explícitamente llamada, pero sí menciona "HP-UX 11i Versión 2: agosto de 2003" si eso ayuda. Mi LC_NUMERIC está configurado en "C".,como separador decimal. Sin embargo, nunca he usado HP-UX.Intente agregar la
-gopción que se supone que realiza la ordenación numérica.Tratar:
fuente
-nordenación numérica? -g me da una opción ilegal.-ges lageneral-numeric-sortopción y debería estar disponible en cualquier versión reciente desort. @dpatcheryReemplace el delímetro:
- debería ayudarte.
fuente