Nociones de programación en awk - Uso de variables operadores y expresiones
Tutorial creado por Antonio Castro Snurmacher (Madrid 01/01/2000).. Extraido de: http://www.mononeurona.org/index.php?idp=462
27 de Octubre de 2005
Linux
8 - Uso de variables operadores y expresiones
En 'awk' podemos usar toda clase de expresiones presentes en cualquier lenguaje. Cualquier identificador que no corresponda con una palabra reservada se asumirá que es una variable. Para asignar un valor se usa el operador '='
Vamos a editar un fichero que llamaremos 'ejemplexpr.awk' con algunas expresiones aritméticas.
Lo ejecutamos y observamos el resultado.
No podemos explicar en detalle todo el lenguaje 'awk'. Se trata de que comprenda su utilidad y de que sea capaz de utilizarlo para determinadas tareas en las cuales resulta extremadamente útil.
Algunas expresiones parecen inspiradas en el lenguaje C. Otras parece que han servido de inspiración para el lenguaje Perl. En realidad muchos lenguajes usan expresiones parecidas.
Por ello vamos a resumir en forma de tabla una serie de elementos que intervienen en las expresiones que 'awk' es capaz de manejar. Pero no vamos a explicar en detalle cada cosa. En lugar de eso daremos una descripción resumida y procuraremos que los ejemplos posteriores tengan un poco de todo.
Vamos a editar un fichero que llamaremos 'ejemplexpr.awk' con algunas expresiones aritméticas.
|| {
contador = 0; # Pone a cero la variable contador
contador ++; # Incrementa en 1 la variable contador
contador +=10; # Incrementa en 10 la variable contador.
contador *=2 # Multiplica por 2 la variable contador
print contador
contador = ( 10 + 20 ) / 2 ;
print contador
contador = sqrt ( 25 ) ; # Raiz cuadrada de 25
print contador
}
||
Lo ejecutamos y observamos el resultado.
|| $ echo | awk -f ejemplexpr.awk 22 15 5 ||
No podemos explicar en detalle todo el lenguaje 'awk'. Se trata de que comprenda su utilidad y de que sea capaz de utilizarlo para determinadas tareas en las cuales resulta extremadamente útil.
Algunas expresiones parecen inspiradas en el lenguaje C. Otras parece que han servido de inspiración para el lenguaje Perl. En realidad muchos lenguajes usan expresiones parecidas.
Por ello vamos a resumir en forma de tabla una serie de elementos que intervienen en las expresiones que 'awk' es capaz de manejar. Pero no vamos a explicar en detalle cada cosa. En lugar de eso daremos una descripción resumida y procuraremos que los ejemplos posteriores tengan un poco de todo.
||
Operadores aritméticos
||
|| + || Suma ||
|| - || Resta ||
|| * || Multiplicación ||
|| / || División ||
|| % || Módulo (resto) ||
|| ^ || Potenciación ||
||
Operadores de asignación. || + || Suma ||
|| - || Resta ||
|| * || Multiplicación ||
|| / || División ||
|| % || Módulo (resto) ||
|| ^ || Potenciación ||
||
||
|| var = expr || Asignación ||
|| var ++ || Incrementa la variable en una unidad ||
|| var -- || Decrementa la variable en una unidad ||
|| var += expr_aritm || Incrementa la variable en cierta cantidad ||
|| var -= expr_aritm || Decrementa la variable en cierta cantidad ||
|| var *= expr_aritm || Multiplica la variable por cierta cantidad ||
|| var /= expr_aritm || Divide la variable por cierta cantidad ||
|| var %= expr_aritm || Guarda en la variable el resto de su división por cierta cantidad ||
|| var ^= expr_aritm || Eleva el valor de la variable en cierta cantidad ||
||
Operadores lógicos y de relación. || var = expr || Asignación ||
|| var ++ || Incrementa la variable en una unidad ||
|| var -- || Decrementa la variable en una unidad ||
|| var += expr_aritm || Incrementa la variable en cierta cantidad ||
|| var -= expr_aritm || Decrementa la variable en cierta cantidad ||
|| var *= expr_aritm || Multiplica la variable por cierta cantidad ||
|| var /= expr_aritm || Divide la variable por cierta cantidad ||
|| var %= expr_aritm || Guarda en la variable el resto de su división por cierta cantidad ||
|| var ^= expr_aritm || Eleva el valor de la variable en cierta cantidad ||
||
||
|| expr_aritm expr_aritm || Comparación de igualdad ||
|| expr_aritm != expr_aritm || Comparación de desigualdad ||
Funciones aritméticas. || expr_aritm
expr_aritm || Comparación de igualdad ||
|| expr_aritm != expr_aritm || Comparación de desigualdad ||
|| expr_aritm < expr_aritm || Comparación menor que ||
|| expr_aritm > expr_aritm || Comparación mayor que ||
|| expr_aritm <= expr_aritm || Comparación menor igual que ||
|| expr_aritm >= expr_aritm || Comparación mayor igual que ||
|| expr_cad ~ expr_regular || Se ajusta al patrón ||
|| expr_cad !~ expr_regular || No se ajusta al patrón ||
|| expr_logica || expr_logica || Operador lógico AND (Y) ||
|| expr_logica && expr_logica || Operador lógico OR (O) ||
|| ! expr_logica || Operador lógico NOT (NO) ||
||
||
|| atan2( y, x) || Retorna el arco-tangente de y/x en radianes ||
|| cos(x) || Retorna el coseno de x en radianes ||
|| exp(x) || Retorna el exponencial de x (e^x) ||
|| int(x) || Retorna el valor entero de x truncado la parte decimal ||
|| log(x) || Retorna el logaritmo neperiano de x ||
|| rand() || Retorna un valor seudo aleatorio comprendido entre 0 y 1 ||
|| sin(x) || Retorna el seno de x en radianes ||
|| sqrt(x) || Retorna la raiz cuadrada de x ||
|| srand(x) || Inicializa la semilla para generar números pseudoaleatorios ||
||
Funciones para usar con cadenas de caracteres || atan2( y, x) || Retorna el arco-tangente de y/x en radianes ||
|| cos(x) || Retorna el coseno de x en radianes ||
|| exp(x) || Retorna el exponencial de x (e^x) ||
|| int(x) || Retorna el valor entero de x truncado la parte decimal ||
|| log(x) || Retorna el logaritmo neperiano de x ||
|| rand() || Retorna un valor seudo aleatorio comprendido entre 0 y 1 ||
|| sin(x) || Retorna el seno de x en radianes ||
|| sqrt(x) || Retorna la raiz cuadrada de x ||
|| srand(x) || Inicializa la semilla para generar números pseudoaleatorios ||
||
||
|| gsub(r, s, t) || Sustituye 's' globalmente en todo 't' cada vez que se encuentre un
patrón ajustado a la expresión regular 'r'. Si no se proporciona 't'
se toma $0 por defecto.
Devuelve el número de sustituciones realizado. ||
|| index(cadena, subcadena) || Retorna la posición de la 'subcadena' en 'cadena' (Primera posición = 1) ||
|| length(cadena) || Devuelve la longitud de la 'cadena'. Tomará $0 por defecto si no se
proporciona 'cadena' ||
|| split(cadena, array, sep) || Parte 'cadena' en elementos de 'array' utilizando 'sep' como separador.
Si no se proporciona 'sep' se usará FS. Devuelve el número de elementos
del array ||
|| sub(r, s, t) || Sustituye 's' en 't' la primera vez que se encuentre un patrón
ajustado a la expresión regular 'r'. Si no se proporciona 't' se toma $0
por defecto.
Devuelve 1 si tiene éxito y 0 si falla ||
|| substr(cadena, beg, len) || Devuelve una subcadena de 'cadena' que empieza en 'beg' con una longitud
'len'. Si no se proporciona longitud devuelve hasta el final de la cadena
desde 'beg' ||
|| tolower(cadena) || Pasa a minúsculas ||
|| toupper(cadena) || Pasa a mayúsculas ||
||
Algunas otras funciones || gsub(r, s, t) || Sustituye 's' globalmente en todo 't' cada vez que se encuentre un
patrón ajustado a la expresión regular 'r'. Si no se proporciona 't'
se toma $0 por defecto.
Devuelve el número de sustituciones realizado. ||
|| index(cadena, subcadena) || Retorna la posición de la 'subcadena' en 'cadena' (Primera posición = 1) ||
|| length(cadena) || Devuelve la longitud de la 'cadena'. Tomará $0 por defecto si no se
proporciona 'cadena' ||
|| split(cadena, array, sep) || Parte 'cadena' en elementos de 'array' utilizando 'sep' como separador.
Si no se proporciona 'sep' se usará FS. Devuelve el número de elementos
del array ||
|| sub(r, s, t) || Sustituye 's' en 't' la primera vez que se encuentre un patrón
ajustado a la expresión regular 'r'. Si no se proporciona 't' se toma $0
por defecto.
Devuelve 1 si tiene éxito y 0 si falla ||
|| substr(cadena, beg, len) || Devuelve una subcadena de 'cadena' que empieza en 'beg' con una longitud
'len'. Si no se proporciona longitud devuelve hasta el final de la cadena
desde 'beg' ||
|| tolower(cadena) || Pasa a minúsculas ||
|| toupper(cadena) || Pasa a mayúsculas ||
||
||
|| match(cadena, expr_reg) || Indica si 'cadena' se ajusta o no a la expresión regular 'expr_reg' ||
|| system(comando) || ||
|| sprintf(formato [, expr-list] ) || Para obtener salida con formato. ||
|| match(cadena, expr_reg) || Indica si 'cadena' se ajusta o no a la expresión regular 'expr_reg' ||
|| system(comando) || ||
|| sprintf(formato [, expr-list] ) || Para obtener salida con formato. ||
Valora este capítulo:
Autor y licencia de 'Nociones de programación en awk - Uso de variables operadores y expresiones'
|
Opiniona sobre 'Nociones de programación en awk - Uso de variables operadores y expresiones' (2)
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.
Opina sobre este tutorial |
Wikis relacionados con 'Nociones de programación en awk - Uso de variables operadores y expresiones'
PHP es un lenguaje en que usualmente el tipo de dato de una variable no...
Más »
PHP es un lenguaje de programación diseñado específicamente para aplicaciones Web; las características más destacables...
Más »
PHP es un lenguaje de programación diseñado específicamente para aplicaciones Web; las características más destacables...
Más »
Como es sabido, el concepto de función metalingüística y su ámbito de aplicación han quedado...
Más »
Manual Compacto para nuevos usuarios.

