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 30.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 30.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.

Casiano Rodríguez León
2013-04-23