Nociones de programación en awk - Selección de registros por campo

6 - Selección de registros por campo

[editar]
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
Vamos a editar un fichero que simulará la salida de datos obtenida desde una base de datos relacional. Usaremos estos datos en varios ejemplos. Puede corresponder a una contabilidad de un alquiler de un piso. Lo llamaremos 'contabil.dat'.

|| fecha|concepto|importe

+
+
01-01-1999|- | 96
16-12-1999|AGUA | -14650
05-01-2000|LUZ | -15797
24-01-2000|GAS | -34175
27-01-2000|INGRESO | 141200
01-02-2000|MENS | -96092
25-02-2000|LUZ | -12475
01-03-2000|MENS | -96092
06-03-2000|INGRESO | 101300
01-04-2000|MENS | -96092
06-04-2000|AGUA | -15859
07-04-2000|INGRESO | 134000
01-05-2000|MENS | -98975
02-05-2000|LUZ | -11449
09-05-2000|INGRESO | 95000
23-05-2000|GAS | -21428
25-05-2000|GAS | -16452
01-06-2000|MENS | -98975
07-06-2000|INGRESO | 130000
01-07-2000|MENS | -98975
04-07-2000|LUZ | -12403
07-07-2000|AGUA | -5561
10-07-2000|INGRESO | 99000
24-07-2000|GAS | -11948
01-08-2000|MENS | -98975
10-08-2000|INGRESO | 122355
04-09-2000|LUZ | -12168
10-09-2000|INGRESO | 129000
19-09-2000|AGUA | -10529
28-09-2000|GAS | -2620
01-10-2000|MENS | -98975
10-10-2000|INGRESO | 112000
(32 rows)
||


Lo primero que vemos es que tiene una cabecera de dos líneas inútiles y un final también inútil. Podemos asegurar que las líneas que deseamos procesar cumplirán un patrón de dos números guión dos números guión cuatro números y línea vertical. Vamos a editar un programa que llamaremos 'contabil1.awk'

|| BEGIN { FS="\|" }
/[0-9][0-9]\-[0-9][0-9]\-[0-9][0-9][0-9][0-9]\|/ {
print NR, ", ", $1, ", ", $2, ", ", $3
}
||


Vamos a ejecutar este ejemplo y vamos a ver su salida

|| $ awk -f contabil1.awk < contabil.dat 3 , 01-01-1999 , - , 96
4 , 16-12-1999 , AGUA , -14650
5 , 05-01-2000 , LUZ , -15797
6 , 24-01-2000 , GAS , -34175
7 , 27-01-2000 , INGRESO , 141200
8 , 01-02-2000 , MENS , -96092
9 , 25-02-2000 , LUZ , -12475
10 , 01-03-2000 , MENS , -96092
11 , 06-03-2000 , INGRESO , 101300
12 , 01-04-2000 , MENS , -96092
13 , 06-04-2000 , AGUA , -15859
14 , 07-04-2000 , INGRESO , 134000
15 , 01-05-2000 , MENS , -98975
16 , 02-05-2000 , LUZ , -11449
17 , 09-05-2000 , INGRESO , 95000
18 , 23-05-2000 , GAS , -21428
19 , 25-05-2000 , GAS , -16452
20 , 01-06-2000 , MENS , -98975
21 , 07-06-2000 , INGRESO , 130000
22 , 01-07-2000 , MENS , -98975
23 , 04-07-2000 , LUZ , -12403
24 , 07-07-2000 , AGUA , -5561
25 , 10-07-2000 , INGRESO , 99000
26 , 24-07-2000 , GAS , -11948
27 , 01-08-2000 , MENS , -98975
28 , 10-08-2000 , INGRESO , 122355
29 , 04-09-2000 , LUZ , -12168
30 , 10-09-2000 , INGRESO , 129000
31 , 19-09-2000 , AGUA , -10529
32 , 28-09-2000 , GAS , -2620
33 , 01-10-2000 , MENS , -98975
34 , 10-10-2000 , INGRESO , 112000
||


Podemos apreciar varias cosas. NR es una variable del sistema que toma el valor del número de registro que se está procesando. Podemos ver que las dos primeras líneas y la última han sido descartadas. También vemos que las primeras líneas usan un solo dígito para el número de registro y luego usan dos dígitos. Esto que las columnas no queden alineadas.

Vamos a modificar el programa para que muestre los registros completos ($0) cuando no se cumpla la condición anterior. Para ello editaremos un fichero que llamaremos 'contabdescarte.awk'.

|| BEGIN { FS="\|" }
! /[0-9][0-9]\-[0-9][0-9]\-[0-9][0-9][0-9][0-9]\|/ {
print NR, $0
}

||


Vamos a ejecutar este ejemplo y vamos a ver su salida

|| $ awk -f contabdescarte.awk < contabil.dat 1 fecha|concepto|importe 2
+
+
35 (32 rows) ||
[editar]

4 opiniones

bla,bla ,bla

no le entendi
no me ayudo

la informacion es muy poca no me sirve de nada
Mas o menos.

Hola me parece importante.
Operadores y expresiones.

No hay suficiente investigación.

Tutoriales relacionados con 'Nociones de programación en awk'

La palabra 'awk' se usa tanto para referirse a un lenguaje de manipulación de ficheros... Más »
Este documento Cómo está dedicado a todos los (pronto ex-)usuarios de DOS y Windows que... Más »

Autor y licencia de 'Nociones de programación en awk'


Tutorial de Antonio Castro Snurmacher (Madrid 01/01/2000).. Extraido de: http://www.mononeurona.org/index.php?idp=462 CopyLeft
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.