
Tengo un montón de cadenas (alrededor de ~300) y todas tienen 4 letras, por lo que
XYZA, ZHF3, RTt2 etc.
quiero ordenarlas según el requisito de 2.
- Ordenarlos en orden de las últimas 2 letras.
- Ordene las palabras que incluyen las mismas 2 últimas letras dependiendo de las 2 primeras letras
Lo que significa que tengo cadenas en formato XXYY y quiero ordenarlas con las reglas que se muestran.
Estoy intentando hacerlo, sort -k.1.3,1.4
pero los que tienen lo mismo están ordenados al azar, como por ejemplo 15AA, a2AA, 0CAA etc.
¿Cómo puedo deshacerme de él?
Respuesta1
-k
se puede utilizar más de una vez. Cuando hay varios campos clave, las claves posteriores se comparan solo después de que todas las claves anteriores sean iguales.
<datafile sort -k 1.3,1.4 -k 1.1,1.2
Y recuerde que la clasificación depende de LC_COLLATE
.
Respuesta2
Realice las operaciones a la inversa: primero ordene pordos primerosletras, y luego por las dos últimas. Creo que incluso puedes hacer esto:
cat file | sort | sort -k 1.3 -s
El sort
comando puede realizar unaestableordenar, es decir, si dos líneas son "iguales", preservará su orden relativo entre sí. Entonces, en el segundo paso, las líneas con letras idénticas 3.ª y 4.ª conservarán convenientemente el orden del primer paso.