Pregunta

Tengo un archivo a.csv con contenidos similares a los siguientes

a,b,c
a  ,aa,  a
a b, c, f
a , b, c
a b a b a,a,a
a,a,a
a aa ,a , t

Estoy intentando clasificarlo utilizando sort -k1 -t, a.csv Pero está dando los siguientes resultados

a,a,a
a  ,aa,  a
a aa ,a , t
a b a b a,a,a
a , b, c
a,b,c
a b, c, f

Que no es la ordenación real en la primera columna. ¿Qué estoy haciendo mal?

¿Fue útil?

Solución

También debe especificar la posición final para que sea 1:

sort -k1,1 -t, a.csv

Otros consejos

Prueba esto: sort -t, -k1,1 a.csv

El hombre sugiere que omitiendo el campo final, ordenará en todos los caracteres que comienzan en el campo n hasta el final de la línea:

-k POS1[,POS2]'
     The recommended, POSIX, option for specifying a sort field.  The
     field consists of the part of the line between POS1 and POS2 (or
     the end of the line, if POS2 is omitted), _inclusive_.  Fields and
     character positions are numbered starting with 1.  So to sort on
     the second field, you'd use `-k 2,2' See below for more examples.

Prueba esto en su lugar:

sort -k 1,1 -t , a.csv

ordenar lee -k 1 como " ordenar desde el primer campo en adelante " - por lo tanto, desafiando efectivamente el punto de pasar el argumento en primer lugar.

Esto se documenta en la página de ordenación del hombre y se advierte en la sección de ejemplos:

  

Ordenar numéricamente en el segundo campo   y resolver los lazos por clasificación   alfabéticamente en el tercero y cuarto   Caracteres del campo cinco. Utilice `: 'como   el delimitador de campo:

     

$ sort -t: -k 2,2n -k 5.3,5.4

     

Tenga en cuenta que si ha escrito -k 2 en su lugar   de -k 2,2 , sort habría usado todos   personajes que comienzan en el segundo   campo y que se extiende hasta el final de la   línea como la clave numérica principal. por   la gran mayoría de aplicaciones,   tratamiento de claves que abarcan más de una   campo como numérico no hará lo que tú   esperar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top