Aprenda a usar los patrones especiales de AWK 'Begin and End' - Parte 9

Aprenda a usar los patrones especiales de AWK 'Begin and End' - Parte 9

En Parte 8 De esta serie AWK, presentamos algunas características de comando AWK potentes, es decir, variables, expresiones numéricas y operadores de asignación.

A medida que avanzamos, en este segmento, cubriremos más Asombrar Características, y esos son los patrones especiales: COMENZAR y FIN.

Aprender los patrones AWK comienzan y termine

Estas características especiales resultarán útiles a medida que intentemos expandir y explorar más métodos para construir complejo Asombrar operaciones.

Para comenzar, volvamos a llevar nuestros pensamientos a la introducción del Asombrar serie, recuerde que cuando comenzamos esta serie, señalé que la sintaxis general de una ejecución de un Asombrar El comando es:

# Awk 'script' nombres de archivo 

Y en la sintaxis anterior, el Asombrar El script tiene el formulario:

/ Pattern/ Actions 

Cuando considera el patrón en el script, normalmente es una expresión regular, además, también puede pensar en el patrón como patrones especiales COMENZAR y FIN. Por lo tanto, también podemos escribir un Asombrar Comando en el siguiente formulario:

AWK 'Begin Actions / Pattern / Actions / Pattern / Actions .. . Fin acciones 'nombres de archivo 

En el caso de que use los patrones especiales: COMENZAR y FIN en un Asombrar Script, esto es lo que significa cada uno de ellos:

  1. Patrón de inicio: significa que AWK ejecutará las acciones especificadas en COMENZAR Una vez antes de que se lean cualquier línea de entrada.
  2. Patrón final: significa que AWK ejecutará las acciones especificadas en FIN Antes de que realmente salga.

Y el flujo de ejecución de la Asombrar Script de comando que contiene estos patrones especiales es el siguiente:

  1. Cuando el COMENZAR El patrón se usa en un script, todas las acciones para COMENZAR se ejecutan una vez antes de leer cualquier línea de entrada.
  2. Luego se lee y se analiza una línea de entrada en los diferentes campos.
  3. A continuación, cada uno de los patrones no específicos especificados se compara con la línea de entrada para una coincidencia, cuando se encuentra una coincidencia, las acciones para ese patrón se ejecutan luego. Esta etapa se repetirá para todos los patrones que ha especificado.
  4. A continuación, se repiten las etapas 2 y 3 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 FIN patrón, las acciones se ejecutarán.

Siempre debe recordar esta secuencia de ejecución cuando trabaja con los patrones especiales para lograr los mejores resultados en un Asombrar operación.

Para entenderlo todo, ilustremos el uso del ejemplo de la Parte 8, sobre la lista de dominios propiedad de Tecmenta, como se almacena en un archivo llamado dominio.TXT.

noticias.tecmenta.com tecmint.com linuxsay.com Windows.tecmenta.com tecmint.comotrices.tecmenta.com tecmint.com linuxsay.com tecmint.comotrices.tecmenta.com tecmint.com linuxsay.com Windows.tecmenta.com tecmint.comunicarse 
$ Cat ~/Dominios.TXT 
Ver contenido del archivo

En este ejemplo, queremos contar el número de veces el dominio tecmenta.comunicarse figura en el archivo dominio.TXT. Así que escribimos un pequeño script de shell para ayudarnos a hacerlo utilizando 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]; Entonces #Print Out FileName Echo "El archivo es: $ Archivo" #Print a un número de forma incremental para cada línea que contiene TECMINT.com awk '/^Tecmint.com/ contador+= 1; printf "%s \ n", contador;  '$ archivo más #as #print en caso."> & 2 && Salida 1 Fi HECHO #Terminar el script con el código de salida 0 en el caso de la ejecución exitosa de ejecución 0 

Empleamos ahora los dos patrones especiales: COMENZAR y FIN en el Asombrar Comando en el script anterior como sigue:

Alteraremos el guión:

Awk '/^Tecmint.com/ contador+= 1; printf "%s \ n", contador;  '$ archivo 

A:

awk ' COMENZAR Imprimir "el número de veces Tecmint.com aparece en el archivo es: "; /^tecMint.com/ contador+= 1;  FIN printf "%s \ n", contador;  '$ archivo 

Después de hacer los cambios en el Asombrar Comando, el script de shell completo ahora se ve así:

#!/bin/bash para archivo en [correo electrónico protegido]; hacer si [-f $ archivo]; Entonces #Print Out FileName Echo "El archivo es: $ Archivo" #Print El número total de veces TecMint.com aparece en el archivo AWK ' COMENZAR Imprimir "el número de veces Tecmint.com aparece en el archivo es: "; /^tecMint.com/ contador+= 1;  FIN printf "%s \ n", contador;  '$ archivo más #as #print en caso."> & 2 && Salida 1 Fi HECHO #Terminar el script con el código de salida 0 en el caso de la ejecución exitosa de ejecución 0 
Awk comienza y termina los patrones

Cuando ejecutamos el script anterior, primero imprimirá la ubicación del archivo dominio.TXT, entonces el Asombrar Se ejecuta el script de comando, donde el COMENZAR El patrón especial nos ayuda a imprimir el mensaje "El número de veces Tecmint.com aparece en el archivo es:"Antes de que se lean las líneas de entrada del archivo.

Entonces 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 tecmenta.comunicarse aparece en el archivo.

Finalmente, el FIN El patrón imprimirá el total del número de veces el dominio tecmenta.comunicarse aparece en el archivo.

ps ./guion.sh ~/dominios.TXT 
El script para contar el número de veces aparece la cadena

Para concluir, caminamos más Asombrar Características que exploran los conceptos de patrón especial: COMENZAR y FIN.

Como señalé antes, estas características de AWK nos ayudarán a construir operaciones de filtrado de texto más complejas, hay más que cubrir debajo Asombrar Características y en Parte 10, abordaremos la idea de las variables incorporadas AWK, así que mantente conectado.