Awk

Cómo dividir un archivo de cadenas con Awk

Cómo dividir un archivo de cadenas con Awk
El comando awk de Linux (abreviado de los nombres de los desarrolladores; Aho, Weinberger y Kernighan) es una excelente manera de procesar y analizar un archivo de cadenas. Para que los archivos sean más informativos, deben estar organizados en forma de filas y columnas. Luego, puede usar awk en estos archivos para:

En este artículo, explicaremos el uso básico del comando awk y cómo se puede usar para dividir un archivo de cadenas. Hemos realizado los ejemplos de este artículo en un sistema Debian 10 Buster, pero se pueden replicar fácilmente en la mayoría de las distribuciones de Linux.

El archivo de muestra que usaremos

El archivo de muestra de cadenas que usaremos para demostrar el uso del comando awk es el siguiente:

Esto es lo que indica cada columna del archivo de muestra:

Ejemplo 1: use Awk para imprimir todas las líneas de un archivo

Imprimir todas y cada una de las líneas de un archivo específico es el comportamiento predeterminado del comando awk. En la siguiente sintaxis del comando awk, no estamos especificando ningún patrón que awk deba imprimir, por lo que se supone que el comando aplica la acción "imprimir" a todas las líneas del archivo.

Sintaxis:

$ awk 'print' nombre de archivo.TXT

Ejemplo:

En este ejemplo, le estoy diciendo al comando awk que imprima el contenido de mi archivo de muestra, línea por línea.

$ awk 'print' archivo_muestra.TXT

Ejemplo 2: use awk para imprimir solo las líneas que coinciden con un patrón dado

Con awk, puede especificar un patrón y el comando imprimirá solo las líneas que coincidan con ese patrón.

Sintaxis:

$ awk '/ pattern_to_be_matched / print' nombre de archivo.TXT

Ejemplo:

Desde el archivo de muestra, si quiero imprimir solo las líneas que contienen la variable 'B', puedo usar el siguiente comando:

$ awk '/ B / print' archivo_muestra.TXT

Para que el ejemplo sea más significativo, permítanme imprimir solo la información sobre los empleados que son 'profesores.

$ awk '/ professor / print' sample_file.TXT

El comando solo imprime las líneas / entradas que contienen la cadena "profesor", por lo que tenemos información más valiosa derivada de los datos.

Ejemplo 3. Use awk para dividir el archivo de modo que solo se impriman campos / columnas específicos

En lugar de imprimir todo el archivo, puede hacer awk para imprimir solo columnas específicas del archivo. Awk trata todas las palabras, separadas por espacios en blanco, en una línea como un registro de columna de forma predeterminada. Almacena el registro en una variable $ N. Donde $ 1 representa la primera palabra, $ 2 almacena la segunda palabra, $ 3 la cuarta, y así sucesivamente. $ 0 almacena la línea completa para que se imprima la línea who, como se explica en el ejemplo 1.

Sintaxis:

$ awk 'imprimir $ N,… .' Nombre del archivo.TXT

Ejemplo:

El siguiente comando imprimirá solo la primera columna (nombre) y la segunda columna (asunto) de mi archivo de muestra:

$ awk 'imprimir $ 1, $ 2' archivo_muestra.TXT

Ejemplo 4: use Awk para contar e imprimir el número de líneas en las que se hace coincidir un patrón

Puede decirle a awk que cuente el número de líneas en las que se hace coincidir un patrón específico y luego generar ese 'recuento'.

Sintaxis:

$ awk '/ pattern_to_be_matched / ++ cnt END print "Count =", cnt'
Nombre del archivo.TXT

Ejemplo:

En este ejemplo, quiero contar el número de personas que enseñan la asignatura "inglés". Por lo tanto, le diré al comando awk que coincida con el patrón "inglés" e imprimiré el número de líneas en las que se corresponde este patrón.

$ awk '/ english / ++ cnt END print "Count =", cnt' archivo_muestra.TXT

El recuento aquí sugiere que 2 personas están enseñando inglés a partir de los registros del archivo de muestra.

Ejemplo 5: use awk para imprimir solo líneas con más de un número específico de caracteres

Para esta tarea, usaremos la función awk incorporada llamada "longitud". Esta función devuelve la longitud de la cadena de entrada. Por lo tanto, si queremos que awk imprima solo líneas con más o incluso menos que el número de caracteres, podemos usar la función de longitud de la siguiente manera:

Para imprimir líneas con caracteres superiores a un número:

$ awk 'longitud ($ 0)> n' nombre de archivo.TXT

Para imprimir líneas con caracteres menores que un número:

$ awk 'longitud ($ 0) < n' filename.txt

Donde n es el número de caracteres que desea especificar para una línea.

Ejemplo:

El siguiente comando imprimirá solo las líneas de mi archivo de muestra que tengan caracteres de más de 30:

$ awk 'longitud ($ 0)> 30' sample_file.TXT

Ejemplo 6: use awk para guardar la salida del comando en otro archivo

Al usar el operador de redirección '>', puede usar el comando awk para imprimir su salida en otro archivo. Esta es la forma en que puede usarlo:

$ awk 'criterios_para_imprimir "nombre de archivo.txt> archivo de salida.TXT

Ejemplo:

En este ejemplo, usaré el operador de redirección con mi comando awk para imprimir solo los nombres de los empleados (columna 1) en un nuevo archivo:

$ awk 'imprimir $ 1' sample_file.txt> nombre_empleado.TXT

Verifiqué a través de los comandos del gato que el nuevo archivo solo contiene los nombres de los empleados.

Ejemplo 7: use awk para imprimir solo líneas no vacías de un archivo

Awk tiene algunos comandos integrados que puede usar para filtrar la salida. Por ejemplo, el comando NF se usa para mantener un recuento de los campos dentro del registro de entrada actual. Aquí, usaremos el comando NF para imprimir solo las líneas no vacías del archivo:

$ awk 'NF> 0' archivo_muestra.TXT

Obviamente, puede usar el siguiente comando para imprimir las líneas vacías:

$ awk 'NF < 0' sample_file.txt

Ejemplo 8: use awk para contar el total de líneas en un archivo

Otra función incorporada llamada NR mantiene un recuento del número de registros de entrada (generalmente líneas) de un archivo dado. Puede usar esta función en awk de la siguiente manera para contar el número de líneas en un archivo:

$ awk 'END print NR' sample_file.TXT

Esta fue la información básica que necesita para comenzar a dividir archivos con el comando awk. Puede usar la combinación de estos ejemplos para obtener información más significativa de su archivo de cadenas a través de awk.

Instale el último emulador de Dolphin para Gamecube y Wii en Linux
Dolphin Emulator te permite jugar los juegos de Gamecube y Wii que elijas en computadoras personales con Linux (PC). Al ser un emulador de juegos de ...
Cómo usar GameConqueror Cheat Engine en Linux
El artículo cubre una guía sobre el uso del motor de trucos GameConqueror en Linux. Muchos usuarios que juegan juegos en Windows a menudo usan la apli...
Los mejores emuladores de consola de juegos para Linux
Este artículo enumerará el software de emulación de consola de juegos más popular disponible para Linux. La emulación es una capa de compatibilidad de...