LA HERRAMIENTA AWK :
Es una de las cosas más fáciles de explicar y con lo que más problemas vamos a tener.
Es una herramienta de programación.
Se aproxima a la programación funcional.
Se denomina programación por patrones.
Se divide en patrones y acciones. (Acciones asociadas a patrones)
Acciones à Lenguaje C
Awk se encarga de leer la entrada ( normalmente la estándar). La divide en registros. (Cada registro es una linea à Separador de registros(¿ ))
Para cada registro buscamos concordancia con algún patrón, si se produce concordancia ejecuta la acción asociada al patrón sobre el registro.
Awk es un traductor. (La entrada puede ser una cosa, y la salida otra)
La sintaxis de awk es de dos tipos :
awk patrón {acción} ; patrón {acción} ;...´ [fichero de entrada]
awk -f fich.prog [fichero de entrada]
-f à Indica separador de campo.
-v à Asignación de valor.
PATRONES
:
Los patrones son los encargados de resolver la entrada.
Funciona como un gigantesco CASE.
Si no hay patrón para una acción se ejecuta sobre todas las líneas de ficheros.
Patrón vacío es cualquier o ningún registro.
Tipos de patrones :
Ej. /patata/ {print} à Busca la cadena patata en cualquier posición
^ à Principio de línea.
$ à Fin de línea.
[ ] à Clase de caracteres.
| à OR
* à Cero o más apariciones.
+ à Una o más apariciones.
? à Cero o una aparición.
. à Comodín.(Un carácter)
( ) à Agrupación.
- à Rango.(Utilizando caracteres ASCII)
Ej. Localice en el fichero passwd aquellos usuarios cuyo número de expediente es impar y pertenecen al grupo 109.
Awk ‘^f.....[13579] :.* :109 {print} [etc/passwd]
~ à Identificación : Comprueba si una cadena se ajusta a un patrón.
!~ à No identificación.
== à Igualdad.
!= à Desigualdad.
<,>... à Comparación.
&& à AND.
|| à OR
! à NOT.
ACCIONES
:
Las acciones en awk son operaciones en lenguaje C que utilizan los campos del registro que concuerdan con el patrón.
La acción vacía es equivalente a un print.
Variables :
Awk utiliza la misma nomenclatura de variables que C, pero no exige que una variable esté declarada para poder usarla.
Para poder operar con una variable debe tener un valor.
Además de las variable definidas por el usuario, awk puede acceder a todas las variables del SHELL situándolas entre comillas.
Awk también ofrece un conjunto de variables predefinido. Las más importantes son :
FS à Separador de campo.
NF à Número de campos del registro.
NR à Número de registros leídos.
FILENAME à Contiene el fichero de entrada.
ARGV à Array de argumentos de la llamada a awk.
Asignación :
-v nombe = valor
Operadores :
Permite operadores sobre caracteres y sobre enteros.
Los operadores permitidos son entre otros :
Arrays :
La definición de matrices en awk es idéntica a su definición en UNIX ; Un conjunto de valores que no tienen relación de tipo se encuentran unidos lógicamente por un elemento base y un conjunto de índices.
Los arrays son unidimensionales. Los índices pueden ser cualquiera.
Para acceder a un elemento de array tanto en asignación como en obtención de valor se hace uso de la sintaxis de C, que es la misma que la de pascal.
Para simplificar la gestión de arrays awk ofrece las siguientes estructuras :
sentencia
Funciones definidas por el usuario :
La definición de una función utiliza la sintaxis de C, pero sin tipo.
Sintaxis :
function <nombre> (lista de parámetros)
{lista de sentencias}
Aquí no hay tipos, pero puede devolver un valor con la sentencia return. (Si incluye return es función , sino es procedimiento).
Sentencias de control :
Las sentencias de control de flujo son :