Extraer información de bloques dentro de un archivo de texto

Extraer información de bloques dentro de un archivo de texto

Tengo un archivo de texto que tiene bloques como

dir1/dir2/dir3/name_run_number1:
line1_run_number1_part1
line2_run_number1_part2
line3_run_number1_part3...

Cada bloque está separado por una línea en blanco y hay un ":" en el "encabezado" de cada uno, mientras que cada bloque tiene un sufijo "número1" único después de "run_" que también está presente en las líneas dentro del bloque.

Lo que quiero hacer es para cada bloque, extraer el "número1" como se muestra en la primera línea y luego, para las líneas siguientes, contar del 1 al 20 y dar un mensaje si falta una línea "parteX". Cualquier bash o python estaría bien

Gracias

Respuesta1

Según el ejemplo dado de decisión de entrada|salida puede ser:

awk -F_ '
    /:/ {
        for (i=0;i<20;i++) {
            getline
            sub("chunk","",$7)
            while ( i != +$7 ) {
                print "for " $2 " and " $5"_"$6 " you are missing chunk " i
                i++
                if (i>20)
                    break
                }
            }
    }' text.file

información relacionada