Es sabido que los programas con interfaz gráfica son más cómodos de usar, porque están diseñados para altas exigencias, además el terminal permite resolver ciertas tareas mucho más rápido. Así que hay una utilidad wc, puede contar el número de líneas en un archivo. El número de líneas no dice mucho, pero en el caso cuando se combinan varios comandos, puede contar las líneas, teniendo en cuenta los parámetros necesarios. ¿Cómo contar líneas en un fichero Linux? Vamos a destacar un par de ejemplos sencillos pero eficaces de uso de los comandos grep, sed y awk.
Ya hemos visto el comando WC, ahora debemos familiarizarnos con uno de sus parámetros clave -l
. Cuenta las transiciones a una nueva línea, es decir, se cuenta toda la línea, incluidas las líneas vacías. El comando hace frente a la tarea más rápidamente que todos los demás, pero sólo son posibles ciertas cadenas - con una condición determinada.
$ wc -l name_file
$ grep -c $ name_file
$ sed -n $= name_file
$ awk 'END{ print NR }' name_file
Como podemos ver, el resultado es el mismo, pero el comando wc tardó menos tiempo en completar la tarea. Los demás comandos son aplicables a consultas complejas. El comando grep permite encontrar cadenas sólo con texto: grep -c 'texto' nombre_archivo
.
$ grep -c 'text' file_name
El comando grep maneja expresiones regulares, por lo que puede combinar múltiples condiciones AND, OR, NOT.
Cuando sed realiza el procesamiento de texto, pero es mucho más fácil realizar un recuento final de líneas con el comando wc. Puede eliminar todas las líneas que tengan menos de tres caracteres. y los casos complejos se cuentan sin comentarios.
$ sed -r '/^.{,3}$/d' file_name | wc -l
Si la tarea es simple. se puede hacer de otras maneras. El comando awk será más simple y fácil de entender.
$ awk 'length >3' file_name | wc -l
Para un ejemplo visual del comando awk, realicemos el conteo de cadenas mientras buscamos el valor requerido en el archivo de tabla csv.
En el ejemplo, vamos a contar el número de filas con el valor del segundo parámetro superior a 50.
$ awk '$2+0 > 50' file_name | wc -l
Añada 0 a la expresión para eliminar todas las expresiones no numéricas.