Aprenda a usar los patrones especiales de Awk “BEGIN y END”-Parte 9

Aprenda a usar los patrones especiales de Awk “BEGIN y END”-Parte 9

En la Parte 8. de esta serie Awk, presentamos algunas funciones poderosas del comando Awk, es decir, variables, expresiones numéricas y operadores de asignación.

A medida que avanzamos, en este segmento, cubriremos más funciones de Awk. y esos son los patrones especiales: BEGIN y END.

 Aprender los patrones Awk BEGIN y END Learn Awk Patterns BEGIN and END Aprenda los patrones Awk BEGIN y END

Estas características especiales resultarán útiles a medida que intentemos expandirnos y explorar más métodos de construcción de complejos Operaciones de Awk.

Para empezar, dirijamos nuestros pensamientos a la introducción de la serie Awk. recuerde que cuando comenzamos esta serie, señalé que la sintaxis general de una ejecución El comando Awk. es:

# awk ‘script’ nombres de archivo

Y en la sintaxis anterior, el script Awk. tiene la forma:

/patrón/actions

Cuando consideras el patrón en el script, normalmente es una expresión regular, además, puedes También piense en el patrón como patrones especiales BEGIN y END. Por lo tanto, también podemos escribir un comando Awk. en el siguiente formulario:

awk ‘BEGIN actions/pattern/actions/pattern/actions ………. END actions ‘nombres de archivo

En el caso de que utilice los patrones especiales: BEGIN y END en un script Awk. esto es lo que significa cada uno de ellos:

  1. BEGIN pattern. significa que Awk ejecutará las acciones especificadas en BEGIN. una vez antes de que se lean las líneas de entrada.
  2. Patrón END. significa que Awk ejecutará las acciones especificadas en END. antes de que realmente salga.

Y el flujo de ejecución del un script de comando Awk. que contiene estos patrones especiales es el siguiente:

  1. Cuando se usa el patrón BEGIN en un script, todas las acciones para BEGIN. se ejecutan una vez antes de que se lea cualquier línea de entrada.
  2. Luego, se lee una línea de entrada y se analiza en los diferentes campos.
  3. A continuación, cada uno de los patrones no especiales especificados es en comparación con la línea de entrada para una coincidencia, cuando se encuentra una coincidencia, las acciones para ese patrón son exe cortado. Esta etapa se repetirá para todos los patrones que ha especificado.
  4. A continuación, las etapas 2 y 3 se repiten para todas las líneas de entrada.
  5. Cuando todas las líneas de entrada han sido leídas y tratadas, en caso de que especifique el patrón END, se ejecutarán las acciones.

Siempre debe recordar esta secuencia de ejecución cuando trabaje con los patrones especiales para lograr los mejores resultados en una Operación Awk.

Para entenderlo todo, ilustremos usando el ejemplo de la parte 8, sobre la lista de dominios propiedad de Tecmint. tal como están almacenados en un archivo llamado domains.txt.

news.tecmint.com tecmint.com linuxsay.com windows.tecmint.com tecmint.com news.tecmint.com tecmint.com linuxsay.com tecmint .com news.tecmint.com tecmint.com linuxsay.com windows.tecmint.com tecmint.com $ cat ~/domains.txt  Ver contenido del archivo  Ver contenido del archivo Ver contenido del archivo

En este ejemplo, queremos contar el número de veces que el dominio tecmint.com aparece en el archivo domains.txt. Así que escribimos un pequeño script de shell para ayudarnos a hacer eso usando la idea de variables, expresiones numéricas y operadores de asignación que tiene el siguiente contenido:

#!/bin/bash para archivo en [correo electrónico protegido]; hacer si [-f $ archivo]; luego #imprime el nombre del archivo echo “El archivo es: $ archivo” #imprime un número incrementalmente para cada línea que contenga tecmint.com awk ‘/^tecmint.com/contador + = 1; printf “% s \ n”, contador; ‘$ file else #print error info en caso de que la entrada no sea un archivo echo “$ file no es un archivo, especifique un archivo”.> & 2 && exit 1 fi done #terminar script con código de salida 0 en caso de ejecución exitosa exit 0

Empleemos ahora los dos patrones especiales: BEGIN y END en el comando Awk. en el script arriba de la siguiente manera:

Modificaremos el script:

awk ‘/^tecmint.com/contador + = 1; printf “% s \ n”, contador; ‘$ file

Para:

awk’ BEGIN. print “El número de veces que tecmint.com aparece en el archivo es:”; /^tecmint.com/contador + = 1; END. printf “% s \ n”, contador; ‘$ file

Después de realizar los cambios en el comando Awk. el script de shell completo ahora se ve así:

#!/bin/bash para el archivo en [email protected]; hacer si [-f $ archivo]; luego #imprime el nombre del archivo echo “El archivo es: $ archivo” #imprime el número total de veces que tecmint.com aparece en el archivo awk ‘ BEGIN. print “El número de las veces que tecmint.com aparece en el archivo es: “; /^tecmint.com/contador + = 1; END. printf “% s \ n”, contador; ‘$ file else #print error info en caso de que la entrada no sea un archivo echo “$ file no es un archivo, especifique un archivo”.> & 2 && exit 1 fi done #terminate script con código de salida 0 en caso de ejecución exitosa exit 0 Awk BEGIN y END Patterns  Awk BEGIN y END Patterns Awk BEGIN y END Patterns

Cuando ejecutamos el script anterior, primero imprimirá la ubicación del archivo domains.txt. luego se ejecuta el script de comando Awk. donde el patrón especial BEGIN nos ayuda a imprimir el mensaje “La cantidad de veces que tecmint.com aparece en el archivo es: ”Antes de que se lean las líneas de entrada del archivo.

Luego, nuestro patrón,/^tecmint.com/se compara con cada línea de entrada y la acción, contador + = 1; se ejecuta para cada línea de entrada, que cuenta el número de veces que aparece tecmint.com en el archivo.

Finalmente, el patrón END imprimirá el número total de veces que aparece el dominio tecmint.com en el archivo.

$ ./script.sh ~/domains.txt Script para contar Número de veces que aparece la cadena  Script para Contar el número de veces que aparece la cadena Secuencia de comandos para contar la cantidad de veces que aparece la cadena

Para concluir, analizamos más funciones de Awk. explorando los conceptos de patrón especial: BEGIN y END.

Como señalé antes, estas funciones de Awk nos ayudarán a crear operaciones de filtrado de texto más complejas. Hay más que cubrir en las funciones de Awk. y en la parte 10. nos acercaremos a la idea de las variables integradas de Awk, así que manténgase conectado.