Domine rápidamente el awk linux

  

Sintaxis básica:

El formato básico del comando awk es: awk [parámetro] ‘ programa awk ’ nombre de archivo

La estructura principal del programa awk es: patrón {acción}

En general, use " expresiones relacionales " como patrón, por ejemplo: $ 1 > 4, $ 2 == $ 3, " banana " ~ /an /(

Esta es una relación de juicio coincidente regular. Si A es una cadena, B es una expresión positiva, A ~ B (determina si la cadena A contiene una subcadena que coincide con la expresión B); A! ~ B (juicio) Si la cadena A no contiene subcadenas que coincidan con expresiones B))

la acción incluye principalmente algunas instrucciones, como las instrucciones de i /o de awk: print, printf, getline; instrucciones de control de flujo de awk: si (...) {...} else {...}, do {...} while ();

El programa awk busca secuencialmente cada patrón para cada línea de entrada. Realice la acción correspondiente en cada patrón coincidente, luego lea la siguiente línea y comience a coincidir nuevamente, sabiendo que se ha procesado toda la entrada.

Se puede omitir un patrón o acción en una declaración. El patrón predeterminado es coincidir con todas las líneas. La acción predeterminada es generar la línea actual. Awk lee una línea (un registro) a la vez desde la entrada, y el separador de línea predeterminado es \\ n. Luego, awk separa los registros en campos y los campos predeterminados se separan en espacios en blanco. El primer campo en una fila es $ 1, seguido de $ 2, $ 3 ..., y el registro completo es de $ 0.

Las variables incorporadas de Awk, puede usar estas variables para obtener información relevante, común:

NF (Número de campos): un entero cuyo valor representa el campo contenido en $ 0 Número

NR (Número de registros): un entero cuyo valor indica el número de líneas de datos que ha leído awk.

FILENAME: El nombre del archivo de datos que se está procesando.

Para obtener más información, consulte http://www.jiayii.com/awk-tutorial/

Ejemplo de operación básica: archivo de prueba test.txt, el contenido es el siguiente:




(Tenga en cuenta que los espacios en blanco pueden estar en blanco o en la pestaña)

1. Para obtener todas las transcripciones de John, use estos comandos:

awk '/John /' test.txt (la acción por defecto genera la línea completa)

awk '/John /{print $ 0}' Test.txt

awk '$ 2 == " John " {print $ 0}' test.txt (el valor predeterminado está separado por espacios en blanco, $ 2 representa el segundo campo de cada línea)

Awk '$ 2 ~ /John /{print $ 0}' test.txt ($ 2 y expresión regular /John /match)

2. Obtenga una transcripción con una puntuación superior a 120

awk '$ 3 > = 120' test.txt

3. Si el archivo de datos original está separado por ", ", entonces todas las declaraciones se pueden agregar a los parámetros de separación, como: awk -F ", /John /'test.txt (esta es la función de -F)


BEGIN and END

Dos formas especiales en awk que se pueden usar en patrón, proporcionando BEGIN y END para dar al programa un estado inicial y ejecutar después de que finalice el programa Algunos trabajos de acabado. Cualquier operación listada después de BEGIN se ejecutará antes de que awk comience a escanear la entrada, y las operaciones listadas después de FIN se ejecutarán después de escanear la entrada completa. Por lo tanto, BEGIN se usa generalmente para mostrar variables y valores iniciales predeterminados, y END se usa para mostrar los resultados finales.

O el ejemplo anterior:

1. Agregue todos los puntajes de John. Los comandos disponibles son los siguientes:



2. La puntuación inicial predeterminada es 60 y, a continuación, se acumulan los resultados en el archivo:



Arraque Awk usando la matriz awk usando una cadena como una matriz Estándar; no es necesario inicializarlo cuando se usa;

La matriz de la aplicación real también es la más utilizada, aún utilizamos test.txt como el archivo de datos para calcular la puntuación total de cada miembro:


Aplicación real

Cuando uso awk, a menudo obtengo algunas estadísticas en línea y, a menudo, estos archivos de registro no son muy regulares cuando se usan, luego puede hacerlo primero, a través de grep O bien, otros comandos convierten el archivo en una salida regular y luego usan awk para el procesamiento.

Copyright © Conocimiento de Windows All Rights Reserved