miércoles, 3 de febrero de 2010

Operadores en AWK

Como cualquier otro lenguaje de programación Awk también tiene un montón de operadores para operaciones con números y cadenas. En este articulo se verán los operadores de awk.

Hay dos tipos de operadores en awk:

  • Operador Unario - Este operador acepta un operador individual.
  • Operador Binario - Este operador acepta mas de un operador.

Operadores Unarios

Operador Descripción
+ Hace positivo al numero
- Hace negativo al numero
++ Auto incrementa
Auto Decrementa

Operador Binario AWK

Hay diferentes clases de operador binarios disponibles en Awk. Han sido clasificados según su uso:

Operadores Aritméticos

Los siguientes operadores son usados para realizar operaciones de calculo aritmético:

Operador Descripción
+ Suma
- Resta
* Multiplicación
/ División
% Modulo de División

Operador de Cadena Awk

Para la concatenación de cadenas awk utiliza el siguiente operador:

Operador Descripción
(espacio) Concatenación de cadena


Operadores de Asignación Awk

Awk tiene operador de asignación y Atajos de operador de asignación:

Operador Descripción
= Asignación
+= Atajo de asignación de suma
-= Atajo de asignación de resta
*= Atajo de asignación de multiplicación
/= Atajo de asignación de división
%= Atajo de asignación de modulo de division

Operadores Condicionales Awk

Awk tiene la siguiente lista de operadores condicionales los cuales pueden ser usados con controles de estructuras y bucles:

Operador Descripción
> Es mayor que
>= Es mayor que o igual a
< Es menor que
<= Es menor que o igual a
== Es igual a
!= No es igual a
&& Ambas condiciones deben ser verdaderas
|| Cualquiera de las condiciones pueden ser verdadera

Operador de Expresiones Regulares Awk

Operador Descripción
~ Operador de coincidencia
!~ Operador de No Coincidencia

Ejemplos de Operadores AWK

Veamos algunos ejemplos que usan operadores awk. Se usara el archivo /etc/passwd como entrada en estos ejemplos:

Ejemplo 1: Contar el numero total de campos en el archivo:

El siguiente código, ubica todas las lineas y añade el numero de campos en cada linea, usando el operador de atajo para asignación de suma. El numero de campos se mantienen en la variable 'total'. Una vez que la entrada ha sido procesada, el patrón especial 'END {...}' es ejecutado, el cual imprime el numero total de campos.

$ awk -F ':' '{ total += NF }; END { print total }' /etc/passwd

49


Ejemplo 2: Contar el numero de usuarios que están usando /bin/sh

En el siguiente código awk, se ubicaran el ultimo campo de todas las lineas que contengan el patrón /bin/sh. La expresión regular debe estar encerrada entre //. Por eso todos los (/) tienen que estar con carácter de escape en la expresión regular. Cuando encuentra uno la variable 'n' se incrementa a uno.

$ awk -F ':' '$NF ~ /\/bin\/sh/ { n++ }; END { print n }' /etc/passwd

2

No hay comentarios: