Posted by q3it on sábado, noviembre 05, 2022 in Linux
Hoy vamos a ver el comando uniq este comando lo que hará es visualizar un fichero pero eliminará las líneas repetidas, lo que es importante tener claro es que para eliminar estas líneas deben estar contiguas, es decir, si la línea 1 y la línea 2 son iguales entonces sólo mostrará una línea, pero en cambio si la línea 2 y la línea 5 son iguales mostrará las dos. Su sintaxis es muy simple: Comando uniq y el fichero que nosotros queremos visualizar.
Nosotros podemos indicarle como segundo argumento el fichero de salida y generará un nuevo fichero. Este comando uniq es muy útil cuando nosotros lo utilizamos con otros comandos que ya he explicado en post anteriores, por ejemplo, el comando sort que nos ordena la salida. Casi siempre que vayamos a utilizar el comando uniq primero vamos a tener que utilizar el comando sort para ordenar la información del fichero.
Entonces para dejarlo claro, las líneas repetidas serán contiguas y luego le pasaremos el comando y las opciones, entre estas las más comunes encontramos -c, que eliminará las líneas repetidas pero a la izquierda nos mostrará el número de repeticiones y si no hay repeticiones nos mostrará el número uno. Con -d lo que ahora es mostrar solo las líneas repetidas y con -u lo que hará es mostrar las líneas no repetidas.
Imaginemos que nosotros tenemos un fichero llamado varios.txt con unas palabras y vemos que las palabras Calabaza y Dinamarca están repetidas.
Entonces simplemente utilizamos uniq varios.txt y veremos que elimina los repetidos.
Ahora Calabaza y Dinamarca aparece solo una vez. Si nosotros utilizamos la opción -c veremos que nos muestra el número de repeticiones Calabaza y Dinamarca aparecen dos veces.
Si nosotros sólo queremos mostrar las duplicadas utilizamos -d.
Y si queremos que nos muestre las que no están duplicadas lo hacemos con la opción -u.
Tengo un fichero llamado ips.txt que son las ip's que han tenido accesos al servidor web. Como vemos están ordenadas, esto es porque antes hice un sort, el problema es que hay varias ip's que están repetidas, es decir han accedido varias veces.
Esto está bien si nosotros utilizamos uniq y simplemente nos mostrará las ip's que han accedido sin repeticiones, pero lo que nos interesa es utilizar la opción -c para ver cuántas veces ha accedido cada ip.
Vamos a redirigir esta salida a este fichero ips_contar.txt y ahora si visualizamos el contenido de este fichero y veremos las ip's. Ahora podemos utilizar el comando sort -n ips_contar y vemos que hay ip's que han accedido más veces.
Utilizó la opción -n porque la primera columna por donde vamos a ordenar es numérico. Como vemos la ip que más veces ha accedido es la 212.169.128.0/17, entonces vemos que con los comandos sort y uniq nosotros podemos ver en un servidor o en los logs quien ha accedido por acceso remoto a nuestros servicios.