Necesito extraer el texto entre dos encabezados, si el primero coincide con un archivo fuente para buscar los encabezados a buscar, ejemplo:
&Header1
1231241241313124123213123214124123213213124124123123212
1231231231231231231231231231232131242141241241231325552
2132141241232132132132141251232132142142132132132142412
&Header2
1231241241313124123213123214124123213213124124123123212
2132141241232132132132141251232132142142132132132142412
&Header3
1231241241313124123213123214124123213213124124123123212
1231231231231231231231231231232131242141241241231325552
213214124123213213213214125123213214
Y mi archivo fuente:
&Header1
&Header3
Por lo tanto, recupere solo los encabezados 1 y 3 con la información numérica a continuación.
Respuesta1
startheader=$(head -1 sourcefile)
endheader=$(tail -1 sourcefile)
# above lines assume your sourcefile has two lines in it and
# each line contains the starting header and ending header
startlinenumber=$(grep -n "${startheader}" datafile|cut -d: -f1)
endlinenumber=$(grep -n "${endheader}" datafile|cut -d: -f1)
sed -n -e "${startlinenumber},${endlinenumber}p" datafile
Estoy bastante seguro de que hay una forma más elaborada de hacer esto con o awk
tal perl
vez un sed
comando de una sola línea, pero solo quería darle la lógica explícitamente. Puedes jugar con él y adaptarlo a tus necesidades.