Uso de sed para generar índices de libros a partir de listas ordenadas

Fuentes: Using sed to build book indexes from sorted entries

Eric Pement describe en detalle un flujo de trabajo para elaborar índices de libros y revistas, desde la captura manual de términos y números de página en un archivo de texto hasta su conversión en entradas de índice listas para imprimir. Tras marcar los términos en pruebas de galeradas, varios voluntarios los transcribían línea por línea separando concepto y páginas con un punto y coma; los datos se ordenaban después con la utilidad sort, cuya sintaxis correcta para orden insensible a mayúsculas y minúsculas y numérico es "sort -t\";\" +0f -1 +1n fichero". A continuación se debían agrupar todas las páginas asociadas a un mismo término en una sola línea con comas.

El autor explica cómo abordó esta conversión primero con un script en awk y después con un script en sed mucho más compacto, basado en un bucle que acumula líneas en el espacio de patrón ("$!N", sustitución con captura "(...)", "t loop", "P" y "D"). El mecanismo compara dos líneas consecutivas: si comparten el mismo término inicial, funde sus números de página.

El artículo señala, además, una vulnerabilidad del script: basta una sola línea mal formada (por ejemplo, sin el punto y coma) para que el resto del archivo deje de procesarse correctamente. Pement analiza paso a paso por qué ocurre, al ejecutar "s/;/,/" sobre la línea equivocada del búfer, y deja abierta la búsqueda de una solución robusta. Es un texto de referencia sobre procesamiento de texto clásico en Unix, pensado para editores y maquetadores que trabajen con sed, awk y las utilidades estándar de GNU.