next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
Sig: Expresiones Regulares en Flex Sup: Expresiones Regulares en sed Ant: Búsqueda entre líneas Err: Si hallas una errata ...

Seleccionando Items en un Registro Multilínea

El ejercicio resuelto aqui consiste en listar los alumnos que han seleccionado un determinado grupo de prácticas. Suponemos la organización del fichero de entrada descrita en la sección 1.9. El script recibe como primer argumento el nombre del fichero conteniendo la carpeta de correo (asociada con la asignatura y como segundo argumento el grupo. Un primer script que no es descrito aqui, denominado makefichas.sed produce como salida el archivo con la estructura descrita en la sección 1.9. El segundo guión, denominado grupo.sh y que es el que nos ocupa, produce como salida los alumnos que pertenecen a ese grupo ed prácticas.

Estos son los contenidos del script grupo:

~/bin/makefichas.sed -n ~/mail/$1 | grupo.sh $2 | sort -u
Los contenidos del fichero
 1  #!/bin/bash
 2  search=$1
 3  sed -n '
 4  /^NAME:/ {
 5    s/^NAME://
 6    h
 7    n
 8    s/^SURNAME://
 9    G
10    s/\n/,/
11    y/ÁÉÍÓÚáéíóúabcdefghijklmnñopqrstuvxyz/AEIOUAEIOUABCDEFGHIJKLMNÑOPQRSTUVXYZ/
12   h
13 }
14 /^LABGROUP:/ {
15   y/ÁÉÍÓÚáéíóúabcdefghijklmnñopqrstuvxyz/AEIOUAEIOUABCDEFGHIJKLMNÑOPQRSTUVXYZ/
16   s/'"$search"'/&/
17   t print
18   b 
19 :print
20   g
21   p
22 }
23 '
De nuevo hacemos uso de las comillas simples y dobles en este ejemplo. Obsérvese como se proteje el guión sed entre las líneas 3 y 16. En la línea 16 el cierre de la comilla simple y el uso de la doble comilla permite la actuación de la interpretación de la shell, sustituyendo $search que coincide con el parámetro pasado en la llamada como $2. La siguiente comilla simple en esa línea permite la protección del resto del guión.


next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
Sig: Expresiones Regulares en Flex Sup: Expresiones Regulares en sed Ant: Búsqueda entre líneas Err: Si hallas una errata ...
Casiano Rodríguez León
2013-03-05