Contando ocurrencias de una palabra

A cuántos de nosotros se nos habrá preguntado alguna vez, "¿cuántas veces se repite X comando en un fichero". Pues bien, la forma más simple de hacerlo, sin duda es con un sort y con un uniq, ambos comandos básicos presentes en cualquier sistema GNU/Linux. Vamos a ver un ejemplo de cómo usarlos juntos para que nos den las respuestas que precisamos.
Imaginémonos que nos interesa saber la shell que están empleando los usuarios de uno de nuestros sistemas. La forma más sencilla de averiguar esto es leyendo el fichero /etc/passwd, coger la última columna (si tenemos en cuenta una separación por ":") y luego contar las ocurrencias de cada una. Algo tal que esto,
shell> awk 'BEGIN{FS=":"} {print $7}' < /etc/passwd
/bin/bash
/bin/sh
/bin/sh
/bin/sh
/bin/sync
/bin/sh
...
Ya si nos interesa ser un poco más profesionales, podemos ordenarlas.
shell> awk 'BEGIN{FS=":"} {print $7}' < /etc/passwd | sort 
/bin/bash
/bin/bash
/bin/false
/bin/false
/bin/sh
/bin/sh
...
Pero imagínate que tienes 200 usuarios datos de alta, ir línea a línea contando podría hacerse eterno. Eso y que terminaríamos por perdernos. Así que la mejor idea es dejar una único ocurrencia y que sea el propio comando uniq el que las cuente,
shell> awk 'BEGIN{FS=":"} {print $7}' < /etc/passwd | sort | uniq -c 
 2 /bin/bash
 2 /bin/false
17 /bin/sh
 1 /bin/sync
 1 /usr/sbin/nologin
Rápido y sencillo.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios