Tengo un archivo de dos columnas; el archivo está ordenado de la manera que ya lo quiero en la columna 1. Me gustaría ordenar en la columna 2, dentro de cada categoría de la columna 1. Sin embargo, sortno comprende el orden de clasificación de la columna 1.
La forma normal (de preguntas similares aquí en la pila) sería esta:
sort --stable -k1,1 -k2,2n
Pero no puedo especificar el tipo en k1, porque es arbitrario.
Entrada de ejemplo:
C 2
C 1
A 2
A 1
B 2
B 1
y salida:
C 1
C 2
A 1
A 2
B 1
B 2

seq 30 | xargs -L1 bash -cs 'yes $1 | head -1000000 | paste - <(seq 1000000) | shuf' bashPodría usar una transformación de Schwartz (esto es básicamente el enfoque de decorar-ordenar-decorar al que aludió en un comentario, pero probablemente más eficaz que la respuesta fina de muru debido al uso de una sola
sortinvocación en lugar de múltiples) - usandoawkagregar una columna de prefijo que se incrementa con un cambio de valor en la primera columna, ordene por la columna de prefijo seguida de la "segunda" columna (cuya posición ordinal se ha desplazado temporalmente3debido a la presencia de la columna de prefijo), y finalmente elimine la columna de prefijofuente
awk -v OFS="\t" '$1 != prev { key++ } { print key, $0; prev = $1 }(no probado).