Ordenar con el comando sort
Con el comando sort podemos ordenar las líneas de un fichero o podemos usarlo para filtrar la salida de otro comando y devolver esa salida ordenada.
Vamos a tomar este fichero como ejemplo para ver los distintos modificadores de sort:
uno # dos tres cuatro cinco 6
Donde tenemos una línea que comienza por espacios en blanco, una línea que comienza por #, otra con un número y el resto que comienzan por letras y dos de esas líneas comienzan por la misma letra.
Si escribimos el comando y le pasamos como parámetro el fichero:
sort fichero
El resultado que devuelve es:
uno # dos 6 cinco cuatro tres
Ordena teniendo en cuenta espacios en blanco y otros caracteres, que los posiciona antes que los números y éstos, antes que las letras.
Para ignorar los espacios en blanco, sort cuenta con el modificador -b:
sort -b fichero
Que devuelve:
# dos 6 cinco cuatro tres uno
Ahora, «uno», que alfabéticamente es el último elemento de la lista, está al final, independientemente de los espacios en blanco.
Para que los números los ordene detrás del resto de caracteres, tenemos el modificador -n:
sort -n fichero
Que devuelve:
uno # dos cinco cuatro tres 6
Si buscamos lo contrario, es decir, que los números ocupen las primeras posiciones, está el operador -V:
sort -b fichero
Que devuelve:
6 cinco cuatro tres uno # dos
Para invertir el orden, sort cuenta con el modificador -r:
sort -r fichero
Que devuelve:
tres cuatro cinco 6 # dos uno
Obviamente, todos estos modificadores se pueden combinar entre sí.
Aunque hay más modificadores, estos son los más habituales. Y para concluir, comentar que sort tiene un operador que ordena aleatoriamente, que es -R.
sort -R fichero
Devolvería el fichero ordenado aleatoriamente. Igual que shuf, pero obliga a escribir tres caracteres más. Ideal para los que rechazan la eficiencia.
Pingback: Ordenar meses con sort – Linux en Español