Tengo un archivo [csv] con datos duplicados reimpresos, es decir, los mismos datos impresos dos veces. Intenté usar sort's uniq
por, sort myfile.csv | uniq -u
sin embargo, no hay cambios en el myfile.csv
, también lo he intentado sudo sort myfile.csv | uniq -u
pero no hay diferencia.
Así que actualmente mi archivo csv se ve así
a
a
a
b
b
c
c
c
c
c
Me gustaría lucir así
a
b
c
text-processing
files
3kstc
fuente
fuente
man sort
, no se puede ordenar "en el lugar".Respuestas:
La razón por la
myfile.csv
que no está cambiando es porque la-u
opción parauniq
será solamente imprimir líneas únicas. En este archivo, todas las líneas son duplicadas, por lo que no se imprimirán.Sin embargo, lo que es más importante, la salida no se guardará
myfile.csv
porqueuniq
solo la imprimirástdout
(de forma predeterminada, su consola).Tendría que hacer algo como esto:
$ sort -u myfile.csv -o myfile.csv
Las opciones significan:
-u
- mantener solo líneas únicas-o
- salida a este archivo en lugar destdout
Debería ver
man sort
para más información.fuente
Como mostró Belmin, la clasificación es genial. Su respuesta es mejor para datos sin clasificar, y es fácil de recordar y usar.
Sin embargo, también es volátil, ya que cambia el orden de la entrada. Si realmente necesita que los datos pasen en el mismo orden pero eliminando los duplicados posteriores, awk puede ser mejor.
Caso extraño, pero surge de vez en cuando.
Además, si sus datos ya están ordenados cuando los está hurgando, puede ejecutar uniq.
El inconveniente de mis dos sugerencias es que necesita usar un archivo temporal y copiarlo nuevamente.
fuente
Uniq
-u
solo imprime líneas únicas. Su entrada no tiene líneas únicas, así queuniq -u
no imprima nada. Solo necesitassort
:fuente
Si desea mantener el orden del archivo (no ordenado) pero aún así eliminar duplicados, también puede hacerlo
Por ejemplo
Saldrá
fuente