Tutoriales

Limpiar y contar las entradas del archivo de registro en Linux

En esta guía, le mostraremos a través de ejemplos prácticos cómo usar sort con uniq para eliminar entradas duplicadas, de recuento y de archivos de registro totales en Linux.

Estás mirando un archivo de registro. 80.000 Cable. El mismo error ocurre repetidamente 600 varias veces seguidas. grep te ofrece un muro de salida idéntica. No necesitas leer todo 80.000 Filas: necesita saber qué errores se produjeron y cuántas veces se produjo cada error. Eso es exactamente sort y uniq solución, y la mayoría de los principiantes de Linux no saben que van de la mano.

¿Qué tipo y uniq realmente hacen?

sort es una herramienta de línea de comandos que puede reorganizar líneas de texto en orden alfabético o numérico. Por defecto ordena de principio a fin. uniq es un comando que filtra líneas duplicadas, pero aquí está la parte que toma desprevenidos a los principiantes: uniq Elimine solo los duplicados que estén adyacentes entre sí. Si la misma línea aparece dos veces pero hay otras líneas en el medio, uniq No lo entenderé.

Por eso casi siempre corres sort Primero. Ordenar junta todas las filas idénticas para que uniq Puede hacer que se desmoronen. Estos dos comandos son herramientas independientes, pero están diseñadas para funcionar en pares.

El patrón central es una tubería. (|)que toma la salida de un comando y la usa como entrada para el siguiente comando:

sort filename.txt | uniq

Publicaciones relacionadas

Si desea contar el número de apariciones de cada fila única, agregue -c logotipo (abreviatura de «Contar«) llegar uniq:

sort filename.txt | uniq -c

El recuento aparece como un número al principio de cada línea. Cuanto mayor sea el número, más veces aparecerá la línea en el archivo original.

1. Encuentre qué IP acceden a su servidor SSH

Los intentos fallidos de inicio de sesión SSH se acumulan en /var/log/auth.log existir Durban y ubuntu sistema. Este canal extrae direcciones IP problemáticas y las clasifica por frecuencia:

grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn

este grep "Failed password" Filtrar líneas de inicio de sesión fallidas. awk '{print $11}' Extraiga solo el undécimo campo de cada fila, que es donde se encuentra la dirección IP en el formato de registro de autenticación estándar. sort -rn Último ordenado por números (-n) en orden inverso (-r) Entonces el conteo más alto es lo primero.

218 203.0.113.45
    142 192.168.1.105
     87 10.0.0.22
      9 198.51.100.4

La columna de la izquierda es el recuento de intentos fallidos. La columna de la derecha es IP. Un error común aquí es olvidar el último sort -rn – Sin él, la salida se ordena alfabéticamente y usted mismo debe buscar a los peores infractores.

Si esta guía fue útil, consulte nuestra Curso SSH para principiantesque explica todo de forma sencilla con ejemplos prácticos y cubre más de 50 capítulos en módulos estructurados.

Ejemplo 2: resumir códigos de estado HTTP en registros de Nginx

estándar nginx El registro de acceso registra una solicitud por línea y el campo 9 contiene el código de estado HTTP, que le indica cómo respondió realmente el servidor al tráfico:

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

producción:

8432 200
   1201 404
    312 301
     89 500
     14 403

200 Indica que la solicitud fue exitosa. 404 Indica que no se encontró la página. 500 Significa que su servidor arrojó un error; si este número es alto, hay algo que debe tener en cuenta.

Esta es una verificación de estado rápida que toma solo 10 segundos y ahorra horas de lectura de registros. si ves awk: cannot open /var/log/nginx/access.loges posible que necesites ejecutar el comando sudo.

3: eliminar líneas duplicadas de cualquier archivo de texto

este sort Hay una señal de atajo, -u (único), combinando clasificación y deduplicación en un solo paso:

sort -u duplicates.txt

si duplicates.txt Incluir:

banana
apple
banana
cherry
apple

producción:

apple
banana
cherry

Cada línea aparece solo una vez y el resultado está en orden alfabético. Esto funciona para cualquier archivo de texto sin formato, no solo para registros. El error más común que cometen los principiantes es esperar que se cambie el archivo original. sort -u Impresión predeterminada al terminal.

Para guardar los resultados en un archivo nuevo, utilice .

sort -u duplicates.txt > cleaned.txt

4. Mostrar solo filas duplicadas

este -d inscribirse uniq Mostrar sólo filas que aparecen más de una vez, en lugar de eliminar duplicados:

sort access.log | uniq -d

producción:

GET /wp-login.php HTTP/1.1
GET /admin HTTP/1.1

Esto es útil para detectar solicitudes duplicadas sospechosas en registros web o buscar el resultado de un trabajo cron que se ejecutó más veces de lo debido. Si no se imprime nada, todas las líneas del archivo son únicas.

5. Ordene y cuente errores en registros de aplicaciones personalizados

Supongamos que su aplicación escribe un registro donde cada línea comienza con un nivel de error, por ejemplo. ERROR, WARNo INFO. Quieres contar la cantidad de cada tipo que ocurrió hoy:

grep "2025-04-18" /var/log/myapp.log | awk '{print $3}' | sort | uniq -c | sort -rn

producción:

512 ERROR
    210 WARN
     88 INFO

Ajuste $3 Un campo para almacenar el nivel de registro en un formato que coincida con la aplicación. Si no está seguro de qué número de campo usar, haga:

awk '{print $1, $2, $3, $4}' yourfile.log | head -5

Obtenga una vista previa de los primeros campos uno al lado del otro.

Las banderas de clasificación y uniq más útiles.

sort Señales que vale la pena conocer:

  • -r – Invierta el orden (de Z a A, o el número más grande primero).
  • -n – Ordene numéricamente en lugar de alfabéticamente (por lo que 10 viene después de 9 en lugar de 1).
  • -u – Genera solo filas únicas (un paso combinado con sort + uniq).
  • -k – Ordenar por campos específicos, por ejemplo, -k2 Ordenar por segunda columna.

uniq Señales que vale la pena conocer:

  • -c — Anteponga a cada línea el número de apariciones.
  • -d —Imprime sólo filas duplicadas.
  • -u — Imprime sólo las filas que aparecen sólo una vez (igual que -d).
  • -i — Ignorar mayúsculas y minúsculas al comparar filas.

Errores comunes a evitar

correr uniq No sort El primero es el error más común. Si las filas duplicadas no son adyacentes, uniq Si los pierdes por completo, tu resultado todavía contendrá duplicados. siempre corre sort | uniqNo uniq Solo.

El segundo error común es utilizar sort -n Cuando la primera columna no es numérica. Si su archivo tiene texto antes de los números, ordénelo alfabéticamente (sort -rn en la tubería uniq -c salida) funciona bien porque uniq -c Siempre llena el recuento hasta un ancho fijo, lo que hace que la clasificación numérica funcione como se esperaba.

en conclusión

tu aprendes como sort y uniq Trabajen juntos para transformar archivos de registro ruidosos en resúmenes limpios y contables. sort Agrupe líneas idénticas una al lado de la otra, uniq doblarlas o contarlas, y banderas similares -c, -d, -u, -ry -n Le permite hacer preguntas precisas sin tener que escribir un guión.

Ahora, seleccione cualquier archivo de registro en su sistema, p. /var/log/syslog, /var/log/dpkg.logo incluso tu historial de bash:

history | awk '{print $2}' | sort | uniq -c | sort -rn

y ejecutar un proceso de conteo en él. Inmediatamente verá patrones que no sabía que tenía.

¿Lo has usado? sort y uniq ¿Captura contenido inesperado en los registros de producción? ¿Cuál es la combinación de logotipos más útil que has encontrado? Háganos saber en los comentarios a continuación.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba