Ordenar un archivo separado por comas por la primera columna mientras se conserva algún orden


1

Tengo un archivo de la forma:

kl2,LL
kl2,nan
kl2,MORE
kl2,PRQ
kl2,JJ
abc87,PRQ
abc87,JJ
abc87,nan
abc87,MORE
abc87,LL
...

y me gustaría ordenar esto por la primera columna, dejando la segunda columna en el orden en que están actualmente (para ese bloque que corresponde a la primera columna). La salida que quiero se vería así:

abc87,PRQ
abc87,JJ
abc87,nan
abc87,MORE
abc87,LL
kl2,LL
kl2,nan
kl2,MORE
kl2,PRQ
kl2,JJ

Intenté ordenar esto como sort test.im -t, -k1 (y algunas otras variantes) pero cada intento siempre ha ordenado la segunda columna también, y la salida termina pareciéndose a esto:

abc87,JJ
abc87,LL
abc87,MORE
abc87,nan
abc87,PRQ
kl2,JJ
kl2,LL
kl2,MORE
kl2,nan
kl2,PRQ

Respuestas:


2

Con GNU sort, agrega el --stable opción. Eso "estabiliza el orden al deshabilitar la comparación de último recurso". Tambien cambio -k1 a -k1,1.

sort test.im -t, -k1,1 --stable

Lo siento, probablemente debería haber mencionado que lo he intentado (y lo he probado de nuevo). Todavía veo la segunda columna ordenada alfabéticamente.
anthr

@anthr Esto está en la dirección correcta. Para sus datos de muestra, inténtelo con el cambio menor. -k1,1. Para sus datos reales, puede que necesite tantos 1 s como hay columnas reales.
Ouroborus

-k1,1 fue la solución! Muchas gracias, miraré ahora para tratar de entender por qué.
anthr
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.