Luego de haber visto en los dos posts anteriores cómo consultar documentación y cómo buscar ayuda mediante la línea de comandos, pongamos en práctica lo aprendido para ver cuáles son algunas de las herramientas de las que disponemos para trabajar con archivos de texto en Linux.
Contar líneas y palabras en archivos de texto en Linux
Una de las tareas más usuales con las que me encuentro es la necesidad de contar la cantidad de líneas de un archivo o del resultado de un comando. Esto puede bien representar la cantidad de cuentas de usuario del sistema (una por línea en el archivo /etc/passwd) o la cantidad de archivos resultantes de una búsqueda con find.
Paso 1: Si no supiéramos cómo cumplir con el objectivo expuesto en el párrafo anterior, podríamos recurrir a apropos seguido de la palabra count (de contar en inglés):
[pastacode lang=»bash» manual=»apropos%20count» message=»» highlight=»» provider=»manual»/]
En la última línea del resultado (resaltado en amarillo como podemos ver en la Fig. 1) aparece nuestra mejor alternativa: el comando wc nos permite contar no solamente las líneas de un archivo sino también las palabras que contiene el mismo y hasta la cantidad de caracteres individuales presentes.
Paso 2: Una vez identificado el comando mediante el paso anterior, podemos consultar el man page de wc para ver cuáles son las opciones que debemos usar para contar las líneas de un archivo y las palabras del mismo. En este caso se trata de -l
y -w
, respectivamente, como podemos observar en la Fig. 2:
Paso 3: A modo de ilustración usaremos la letra del himno nacional argentino (himno.txt):
¡Oíd, mortales!, el grito sagrado: ¡libertad!, ¡libertad!, ¡libertad! Oíd el ruido de rotas cadenas; ved en trono a la noble igualdad. ¡Ya su trono dignísimo abrieron las Provincias Unidas del Sud! Y los libres del mundo responden: ¡al gran pueblo argentino, salud! Y los libres del mundo responden: ¡al gran pueblo argentino, salud! Y los libres del mundo responden: ¡al gran pueblo argentino, salud! Sean eternos los laureles que supimos conseguir: Coronados de gloria vivamos, o juremos con gloria morir.
Ahora contemos la cantidad de líneas y palabras (podemos ver el resultado en la Fig. 3):
[pastacode lang=»bash» manual=»wc%20-l%20himno.txt%20%23%20Contar%20l%C3%ADneas%0Awc%20-w%20himno.txt%20%23%20Contar%20palabras» message=»» highlight=»» provider=»manual»/]
Si bien en este caso utilizamos un archivo propiamente dicho como argumento, también podemos emplear una tubería para enviar la salida de un comando como entrada a wc. Por ejemplo,
[pastacode lang=»bash» manual=»ps%20-u%20www-data%20%7C%20grep%20-v%20PID%20%7C%20wc%20-l» message=»» highlight=»» provider=»manual»/]
nos indicará cuántos procesos están corriendo bajo el usuario www-data. (Pista: grep -v PID
se utiliza para no incluir el encabezado de la lista de procesos en el conteo de líneas).
¡Hasta la próxima!