¿Cómo puedo eliminar las líneas duplicadas?
Otro comando que se utiliza a menudo con sort
es uniq
,
cuya función es eliminar las líneas duplicadas.
Más concretamente,
elimina las líneas duplicadas adyacentes.
Si un archivo contiene:
2017-07-03
2017-07-03
2017-08-03
2017-08-03
entonces uniq
producirá:
2017-07-03
2017-08-03
pero si contiene:
2017-07-03
2017-08-03
2017-07-03
2017-08-03
entonces uniq
imprimirá las cuatro líneas.
La razón es que uniq
está hecho para trabajar con archivos muy grandes.
Para eliminar líneas no adyacentes de un archivo,
tendría que mantener todo el archivo en memoria
(o al menos,
todas las líneas únicas vistas hasta ahora).
Eliminando solo los duplicados adyacentes,
solo tiene que mantener en memoria la línea única más reciente.
Este ejercicio forma parte del curso
Introducción a Shell
Instrucciones de ejercicio
Escribe un conducto para:
- obtener la segunda columna de
seasonal/winter.csv
, - eliminar la palabra "Tooth" de la salida para que solo se muestren los nombres de los dientes,
- ordenar la salida de modo que todas las apariciones de un nombre de diente concreto sean adyacentes; y
- mostrar cada nombre de "Tooth" una vez junto con un recuento de la frecuencia con la que se produce.
El inicio de tu canalización es el mismo que en el ejercicio anterior:
cut -d , -f 2 seasonal/winter.csv | grep -v Tooth
Amplíala con un comando sort
, y utiliza uniq -c
para mostrar líneas únicas con un recuento de la frecuencia con que se produce cada una, en lugar de utilizar uniq
y wc
.
Ejercicio interactivo práctico
Convierte la teoría en acción con uno de nuestros ejercicios interactivos
