unix - sintaxis - Ordenar archivo CSV por prioridad de columna con el comando "ordenar"
lista completa de comandos linux pdf (4)
Tengo un archivo csv y me gustaría ordenarlo por prioridad de columna, como "ordenar por". Por ejemplo:
3;1;2
1;3;2
1;2;3
2;3;1
2;1;3
3;2;1
Si esta situación fuera el resultado de un "seleccionar", el "orden por" sería el siguiente: ordenar por columna2, columna1, columna3 - el resultado sería:
2;1;3
3;1;2
1;2;3
3;2;1
1;3;2
2;3;1
Me gustaría saber cómo obtener este mismo resultado utilizando el comando "ordenar" en Unix.
... y si alguien siguió la solución ''ordenar'' pero ahora quiere obtener más que la única entrada única por línea (es decir, el número X superior de entradas únicas), una vez que haya ordenado el archivo usando ''ordenar'', puede usar una pequeña aplicación que creé aquí:
https://github.com/danieliversen/MiscStuff/blob/master/scripts/findTopUniques.java
La respuesta de Charlie anterior no funcionó para mí en Cygwin (ordenar versión 2.0, GNU textutils), lo siguiente hizo:
sort -t"," -k2 -k1 -k1
Supongamos que tiene otra fila 3;10;3
en su archivo unsorted.csv
. Entonces supongo que esperas un resultado ordenado numéricamente:
2;1;3
3;1;2
1;2;3
3;2;1
1;3;2
2;3;1
3;10;3
y no uno alfabéticamente ordenado:
2;1;3
3;1;2
3;10;3
1;2;3
3;2;1
1;3;2
2;3;1
Para obtener eso, debes usar -n
:
sort --field-separator='';'' -n -k 2,2 -k 1,1 -k 3,3 unsorted.csv
Vale la pena mencionar que 2,2
debe ser utilizado. Si solo se usa 2
, entonces sort
toma la cadena desde el principio del campo 2 hasta el final. 2,2
se asegura de que solo se use el campo 2
.
sort --field-separator='';'' --key=2,1,3