Directorio de artículos
principio de funcionamiento
Lea el texto línea por línea, separado por espacio o tabulación de forma predeterminada, guarde los campos separados en variables integradas y ejecute comandos de edición de acuerdo con el modo o condición.
El comando sed se usa a menudo para procesar una línea completa, mientras que awk tiende a dividir una línea en múltiples "campos" y luego procesarla. La lectura de la información de awk también se lee línea por línea, y el resultado de la ejecución se puede imprimir y mostrar con los datos de campo a través de la función de impresión. En el proceso de usar el comando awk, puede usar los operadores lógicos "&&" para significar "y", "||" para significar "o", y "!" Para significar "no"; también puede realizar operaciones matemáticas simples operaciones, como +, -, *, /,%, ^ representan suma, resta, multiplicación, división, resto y potencia, respectivamente.
Formato de comando
awk opción 'modo o condición {operación}' archivo 1 archivo 2…
awk -f archivo de secuencia de comandos archivo 1 archivo 2…
Variables integradas comunes en awk (se pueden usar directamente)
FS: Separador de columnas. Especifique el separador de campo para cada línea de texto, el valor predeterminado es un espacio o una tabulación. Tiene el mismo efecto que "-F"
NF: El número de campos en la fila que se está procesando actualmente.
NR: el número de fila (número ordinal) de la fila que se está procesando actualmente.
$ 0: el contenido de la línea completa de la línea procesada actualmente.
$ n: el n-ésimo campo (n-ésima columna) de la fila procesada actualmente.
FILENAME: el nombre del archivo que se está procesando.
RS: Separador de líneas. Cuando awk lee datos de un archivo, cortará los datos en muchos registros de acuerdo con la definición de RS, mientras que awk solo lee un registro a la vez para su procesamiento. El valor predeterminado es '\ n'
Ejemplo (texto de salida por línea)
Salida de todo el contenido
Salida del contenido de las líneas 1 ~ 3
Salida del contenido de la línea 1 y la línea 3
Salida del contenido de todas las líneas pares e impares
Salida de las líneas que comienzan con raíz Líneas de
salida que terminan con nologin
Cuente el número de líneas que terminan con / bin / bash
等同于 grep -c "/bin/bash$" /etc/passwd
BEGIN模式表示,在处理指定的文本之前,需要先执行BEGIN模式中指定的动作;awk再处理指定的文本,之后再执行END模式中指定的动作,END{}语句块中,往往会放入打印结果等语句
Ejemplo (texto de salida por campo)
Genere el 3er campo en cada línea (separados por espacios o tabulaciones)
Genere el 1er y 3er campo en cada línea
Genere el contenido del 1er y 3er campo donde el valor del 3er campo es menor que 5
Salida de la línea donde el valor del tercer campo no es menor que 200
Método 2: Procesar el contenido de BEGIN primero y luego imprimir el contenido en el texto
($ 3> $ 4)? $ 3: $ 4 operador ternario, si el valor del el tercer campo es mayor que Para el valor del cuarto campo, asigne el valor del tercer campo al máximo; de lo contrario, asigne el valor del cuarto campo al máximo
Genere el contenido y el número de línea de cada línea, cada vez que se procesa un registro, el valor de NR aumenta en 1
La salida está separada por dos puntos y se emite el primer campo de la línea que contiene / bash en el séptimo campo. Se
emite el primer y segundo campo de la línea que contiene la raíz y los 7 campos del primer campo
. El séptimo campo no es ninguno / bin / bash, no todas las líneas en / sbin / nologin
Invocar comandos de Shell a través de tuberías y comillas dobles
Cuente el número de párrafos de texto separados por dos puntos. En el bloque de instrucciones END {}, a menudo se colocan declaraciones como resultados de impresión. El
comando wc -l se usa para contar el número de usuarios que usan bash, que es equivalente a grep - c "bash $" / etc / passwd
Ver el porcentaje de uso de memoria actual para
ver la tasa actual de inactividad de la CPU, (-b -n 1 significa que solo se necesita 1 salida)
muestra el último tiempo de reinicio del sistema, que es equivalente al tiempo de actividad; segundo es el tiempo en segundos antes de la pantalla, + "% F% H:% M:% S" es equivalente a + "% Y-% m-% d% H:% M:% S" formato de hora para
llamar el comando w, y se usa para contar el número de usuarios en línea,
llamar al nombre de host y generar el nombre de host actual
当getline左右无重定向符“<”或“|”时,getline作用于当前文件,读入当前文件的第一行给其后跟的变量var或$0;应该注意到,由于awk在处理getline之前已经读入了一行,所以getline得到的返回结果是隔行的。
当getline左右有重定向符“<”或“|”时,getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。