Aprenda a usar los patrones especiales de AWK 'Begin and End' - Parte 9
- 4431
- 953
- Alejandro Duran
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
.
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:
- 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.
- 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:
- 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. - Luego se lee y se analiza una línea de entrada en los diferentes campos.
- 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.
- A continuación, se repiten las etapas 2 y 3 para todas las líneas de entrada.
- 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.TXTVer 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 0Awk 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.TXTEl 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.
- « Cómo trabajar con grupos de paquetes DNF
- Cómo usar el comando 'buscar' para buscar múltiples nombres de archivo (extensiones) en Linux »