Red de conocimiento informático - Problemas con los teléfonos móviles - Explicación detallada del comando Shell awk

Explicación detallada del comando Shell awk

comando awk

awk es un lenguaje de programación utilizado para procesar texto y datos en Linux/Unix. Los datos pueden provenir de una entrada estándar (stdin), uno o más archivos o la salida de otros comandos. Admite funciones avanzadas como funciones definidas por el usuario y expresiones regulares dinámicas, y es una potente herramienta de programación en Linux/Unix. Se utiliza desde la línea de comandos, pero más comúnmente como script. Awk tiene muchas funciones integradas, como matrices, funciones, etc. Esto es lo mismo que el lenguaje C. La flexibilidad es la mayor ventaja de awk.

formato y opciones del comando awk

Formato de sintaxis

awk =1 Dicho acceso está permitido. Awk utiliza una cadena especial SUBSEP como campo de división. De manera similar a la prueba de miembros de matrices unidimensionales, las matrices multidimensionales pueden usar la sintaxis if ((i, j) en la matriz), pero el subíndice debe colocarse entre paréntesis. De manera similar al acceso iterativo de matrices unidimensionales, las matrices multidimensionales utilizan sintaxis como for (elemento en la matriz) para atravesar la matriz. A diferencia de las matrices unidimensionales, las matrices multidimensionales deben usar la función split() para acceder a los componentes de subíndice individuales.

awk 'COMENZAR{

for(i=1;ilt;=9;i){

for(j=1;jlt;=9; j ){

tarr[i,j]=i*j

imprimir i,"*",j,"=",tarr[i,j]; p>

p>

}

}

}'

awk 'COMENZAR{

for(i= 1;ilt;= 9;i){

for(j=1;jlt;=9;j){

tarr[i,j]=i*j } }

for(m en tarr){

split(m, tarr2, SUBSEP> print tarr2[1], "*", tarr2[); 2], "=", tarr[m]; } }'

Función incorporada

Función aritmética

Descripción del formato

atan2( y, x ) Devuelve el arcotangente de y/x.

cos( x ) devuelve el coseno de x; x está en radianes.

sin( x ) devuelve el seno de x; x está en radianes.

exp( x ) devuelve la función de potencia x.

log( x ) devuelve el logaritmo natural de x.

sqrt( x ) devuelve la raíz cuadrada de x.

int( x ) devuelve el valor de x truncado a un número entero.

rand() devuelve cualquier número n donde 0

= n<1.

srand( [expr] ) Establece el valor inicial de la función rand al valor del argumento Expr, o a la hora del día si se omite el argumento Expr. Devuelve el valor inicial anterior.

awk 'BEGIN{

OFMT=".3f"; #OFMT establece el formato de datos de salida para conservar 3 decimales.

fs=sin(1);

fe=exp(10);

fl=log(10); =int(3.1415);

print fs, fe, fl, fi

}'

El resultado de salida es: 0.841 22026.466 2.303 3

awk 'BEGIN{

srand();

fr=int(100*rand());

print fr; >

}'

Salida: 78

Función de cadena

Descripción del formato

gsub(Ere, Repl, [In] ) Se comporta exactamente igual que la subfunción, excepto que se sustituyen todos los valores específicos de la expresión regular.

sub(Ere, Repl, [In]) Reemplaza el primer valor específico de la expresión regular extendida especificada por el parámetro Ere en la cadena especificada por el parámetro In con la cadena especificada por el parámetro Repl. La subfunción devuelve el número de sustituciones. (amp;) que aparecen en la cadena especificada por el parámetro Repl se reemplazan por la cadena especificada por el parámetro In que coincide con la expresión regular extendida especificada por el parámetro Ere. Si no se especifica el parámetro In, el valor predeterminado es el registro completo ($0 variable de registro).

index(String1, String2) Devuelve la posición en la cadena especificada por el parámetro String1 (en la que aparece el parámetro especificado por String2), numerada a partir de 1. Si el parámetro String2 no aparece dentro del parámetro String1, se devuelve 0 (cero).

longitud [(String)] Devuelve la longitud (en caracteres) de la cadena especificada por el parámetro String. Si no se proporciona ningún argumento de cadena, se devuelve la longitud de todo el registro ($0 variable de registro).

blength [(String)] Devuelve la longitud, en bytes, de la cadena especificada por el parámetro String. Si no se proporciona ningún argumento de cadena, se devuelve la longitud de todo el registro ($0 variable de registro).

substr(String, M, [N]) Devuelve una subcadena con el número de caracteres especificado por el argumento N. La subcadena se obtiene de la cadena especificada por el parámetro String, cuyos caracteres comienzan en la posición especificada por el parámetro M. El parámetro M se especifica con el primer carácter del parámetro String como número 1. Si no se especifica el parámetro N, la longitud de la subcadena será la longitud desde la posición especificada por el parámetro M hasta el final del parámetro Cadena.

match(String, Ere) Devuelve la posición (en forma de caracteres) en la cadena especificada por el parámetro String en la que aparece la expresión regular extendida especificada por el parámetro Ere, numerada a partir de 1, o si el Aquí parámetro Si no está presente, se devuelve 0 (cero). La variable especial RSTART se establece en el valor de retorno. La variable especial RLENGTH se establece en la longitud de la cadena coincidente, o -1 (menos uno) si no se encuentra ninguna coincidencia.

tolower( String ) Devuelve la cadena especificada por el parámetro String, con cada carácter en mayúscula de la cadena cambiado a minúscula. La asignación entre mayúsculas y minúsculas está definida por la categoría LC_CTYPE de la configuración regional actual.

toupper( String ) devuelve la cadena especificada por el parámetro String, con cada carácter en minúscula de la cadena cambiado a mayúscula. La asignación entre mayúsculas y minúsculas está definida por la categoría LC_CTYPE de la configuración regional actual.

sprintf(Format, Expr, Expr, . . . ) formatea la expresión especificada por el parámetro Expr de acuerdo con la cadena de formato de subrutina printf especificada por el parámetro Format y devuelve la cadena resultante final.

Nota: Puede ser una expresión regular.

Función de hora

Descripción del formato

mktime( AAAA MM dd HH MM ss[ DST]) Generar formato de hora

strftime([ format [, timestamp]]) formatea la salida de tiempo y convierte la marca de tiempo al formato específico de una cadena de tiempo; consulte la tabla a continuación.

systime() obtiene la marca de tiempo y devuelve la fecha a partir del 1 de enero. 1970 El número de segundos completos hasta la hora actual (excluidos los años bisiestos)

Especificador de formato de fecha y hora strftime:

Descripción del formato

a Abreviatura del día de la semana (domingo)

A La forma completa de escribir el día de la semana (domingo)

b La abreviatura del nombre del mes (octubre)

B La forma completa de escribir el nombre del mes (octubre)

c Fecha y hora locales

d Fecha decimal

D Fecha 20/08/99

e Fecha, si solo hay un dígito se completará con un espacio

H Representa la hora en formato de 24 horas en formato decimal

I Representa la hora en formato de 12 horas en formato decimal

j Un año a partir del 1 de enero El día en

m El mes en notación decimal

M El minuto en notación decimal

p notación de 12 horas (AM/PM)

S El segundo en notación decimal

U El día del año en notación decimal (domingo es el comienzo de la semana)

w El día de la semana en notación decimal (el domingo es 0)

W El número de la semana del año en notación decimal (el lunes es el inicio de la semana)

x Restablecer la fecha local (20/08/99)

X restablecer la hora local (12:00:00)

y año de dos dígitos (99)

Y mes actual

Zona horaria (PDT)

Signo de porcentaje ()

# uso de mktime

awk 'BEGIN{tstamp=mktime("2001 01 01 12 12 12"); print strftime("c", tstamp);}'

Salida: lunes, 1 de enero de 2001 12:12:12

awk 'BEGIN {tstamp1=mktime("2001 01 01 12 12 12"); tstamp2=mktime("2001 02 01 0 0 0"); -tstamp1;}'

Salida: 2634468

# Encuentra la diferencia horaria entre dos períodos de tiempo, introduciendo el uso de strftime

awk 'BEGIN{tstamp1= mktime("2001 01 01 12 12 12"); tstamp2=systime(); print tstamp2 -tstamp1;}'

Salida: 308201392

Otras funciones generales

Descripción del formato

close(Expresión) utiliza el mismo parámetro de expresión con valores de cadena de caracteres de banda para cerrar un archivo o canal abierto mediante una declaración print o printf o llamando a la función getline. Devuelve 0 si el archivo o canalización se cerró correctamente; en caso contrario, devuelve un valor distinto de cero. La declaración de cierre es necesaria si desea escribir en un archivo y luego leerlo en el mismo programa.

system(command) ejecuta el comando especificado por el parámetro Command y devuelve el estado de salida. Equivalente a la subrutina del sistema.

Expresión | getline [ Variable ] Lee un registro de entrada del flujo canalizado de salida del comando especificado por el parámetro Expresión y asigna el valor del registro a la variable especificada por el parámetro Variable. Crea una secuencia que tiene el valor del parámetro Expresión como nombre de comando si no está abierta actualmente. La secuencia creada equivale a llamar a la subrutina popen, en cuyo caso el parámetro Comando toma el valor del parámetro Expresión y el parámetro Modo se establece en un valor de r. Mientras la secuencia permanezca abierta y el parámetro Expresión se evalúe como la misma cadena, cada llamada posterior a la función getline lee otro registro. Si no se especifica el parámetro Variable, la variable de registro $0 y la variable especial NF se configuran en los registros leídos de la secuencia.

getline [ Variable ] lt; Expression lee el siguiente registro de entrada del archivo especificado por el parámetro Expression y establece la variable especificada por el parámetro Variable en el valor de ese registro. Mientras la secuencia permanezca abierta y el parámetro Expresión se evalúe como la misma cadena, cada llamada posterior a la función getline lee otro registro. Si no se especifica el parámetro Variable, la variable de registro $0 y la variable especial NF se configuran en los registros leídos de la secuencia.

getline [ Variable ] Establece la variable especificada por el parámetro Variable en el siguiente registro de entrada leído del archivo de entrada actual. Si no se especifica el parámetro Variable, la variable de registro $0 se establece en el valor de ese registro y también se configuran las variables especiales NF, NR y FNR.

#Abrir archivo externo (cerrar uso)

awk 'BEGIN{ while("cat /etc/passwd"|getline){print $0;};close("/etc/ passwd");}'

Salida: root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin demonio :x:2:2:daemon:/sbin:/sbin/nologin

#Leer archivos externos línea por línea (método de uso getline)

awk 'BEGIN{ while(getline lt ; "/etc/passwd"){print $0;}; close("/etc/passwd");}'

Salida: root:x:0:0:root:/root:/bin /bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin

awk 'BEGIN{print "Enter su nombre: ";getline name;print name;}'

Ingrese su nombre:

chengmo

chengmo

#Llamar externo Aplicación (método de uso del sistema) b valor de retorno, que es el resultado de la ejecución.

awk 'BEGIN{b=system("ls -al");print b;}'

Salida: total 42092 drwxr-xr-x 14 chengmo chengmo 4096 09-30 17:47 drwxr-xr-x 95 raíz raíz 4096 10-08 14:01 ..