comando de shell script awk

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
Inserte la descripción de la imagen aquí
Salida del contenido de las líneas 1 ~ 3
Inserte la descripción de la imagen aquí
Salida del contenido de la línea 1 y la línea 3
Inserte la descripción de la imagen aquí
Salida del contenido de todas las líneas pares e impares
Inserte la descripción de la imagen aquí
Salida de las líneas que comienzan con raíz Líneas de
Inserte la descripción de la imagen aquí
salida que terminan con nologin
Inserte la descripción de la imagen aquí
Cuente el número de líneas que terminan con / bin / bash

Inserte la descripción de la imagen aquí

等同于 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)
Inserte la descripción de la imagen aquí
Genere el 1er y 3er campo en cada línea
Inserte la descripción de la imagen aquí
Genere el contenido del 1er y 3er campo donde el valor del 3er campo es menor que 5

Inserte la descripción de la imagen aquí
Salida de la línea donde el valor del tercer campo no es menor que 200
Inserte la descripción de la imagen aquí
Método 2: Procesar el contenido de BEGIN primero y luego imprimir el contenido en el texto
Inserte la descripción de la imagen aquí
($ 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

Inserte la descripción de la imagen aquí
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

Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí
emite el primer y segundo campo de la línea que contiene la raíz y los 7 campos del primer campo
Inserte la descripción de la imagen aquí
. El séptimo campo no es ninguno / bin / bash, no todas las líneas en / sbin / nologin
Inserte la descripción de la imagen aquí

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
Inserte la descripción de la imagen aquí
comando wc -l se usa para contar el número de usuarios que usan bash, que es equivalente a grep - c "bash $" / etc / passwd
Inserte la descripción de la imagen aquí
Ver el porcentaje de uso de memoria actual para Inserte la descripción de la imagen aquí
ver la tasa actual de inactividad de la CPU, (-b -n 1 significa que solo se necesita 1 salida)
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí
llamar el comando w, y se usa para contar el número de usuarios en línea,
Inserte la descripción de la imagen aquí
llamar al nombre de host y generar el nombre de host actual
Inserte la descripción de la imagen aquí

当getline左右无重定向符“<”或“|”时,getline作用于当前文件,读入当前文件的第一行给其后跟的变量var或$0;应该注意到,由于awk在处理getline之前已经读入了一行,所以getline得到的返回结果是隔行的。
当getline左右有重定向符“<”或“|”时,getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。

Supongo que te gusta

Origin blog.csdn.net/MQ107/article/details/114845128
Recomendado
Clasificación