Copie los registros entre el encabezado y el avance en un archivo nuevo que incluya el encabezado y el avance

Copie los registros entre el encabezado y el avance en un archivo nuevo que incluya el encabezado y el avance

Tengo un archivo que tiene varios encabezados, registros de detalles y avances (longitud fija).

Por ejemplo, mi archivo se parece

Habcd20200317
R123 abc def
R234 dfg thg
T2 2018907
Hagfd20200316
R346 adf thg
R456 tsh ahs
T3 2018937

El archivo de salida debe guardarse como20200317.txt

Habcd20200317
R123 abc def
R234 dfg thg
T2 2018907

y20200316.txt

Hagfd20200316
R346 adf thg
R456 tsh ahs
T3 2018937

respectivamente.

¿Cómo puedo lograr esto en scripts de shell de Unix? Por favor ayuda.

Respuesta1

Dado que sus registros tienen una longitud fija, puede utilizar la aritmética de módulo:

awk 'NR%4 == 1 {outfile = substr($0,6) ".txt"} {print > outfile}' file

información relacionada