Ordenar archivo CSV por prioridad de columna usando el comando "ordenar"
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 "select", el "order by" sería el siguiente: order by column2, column1, column3 - 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 usando el comando "sort" en Unix.
4 answers
sort --field-separator=';' --key=2,1,3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-27 19:39:15
La respuesta de Charlie anterior no funcionó para mí en Cygwin (sort version 2.0, GNU textutils), lo siguiente lo hizo:
sort -t"," -k2 -k1 -k1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-01 16:04:41
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 ordenado alfabéticamente:
2;1;3
3;1;2
3;10;3
1;2;3
3;2;1
1;3;2
2;3;1
Para obtener eso, tienes que usar -n
:
sort --field-separator=';' -n -k 2,2 -k 1,1 -k 3,3 unsorted.csv
Vale la pena mencionar que 2,2
tiene que 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
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-05 15:56:19
..y si alguien siguió la solución 'sort' 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 'sort', puede usar una pequeña aplicación que creé aquí:
Https://github.com/danieliversen/MiscStuff/blob/master/scripts/findTopUniques.java
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-25 10:29:33