Abrufen von Text aus einer großen Datei mithilfe eines kleineren passenden Headers

Abrufen von Text aus einer großen Datei mithilfe eines kleineren passenden Headers

Ich muss den Text zwischen zwei Überschriften extrahieren. Wenn die erste mit einer Quelldatei übereinstimmt, kann ich die zu durchsuchenden Überschriften nachschlagen. Beispiel:

&Header1

1231241241313124123213123214124123213213124124123123212

1231231231231231231231231231232131242141241241231325552

2132141241232132132132141251232132142142132132132142412

&Header2

1231241241313124123213123214124123213213124124123123212

2132141241232132132132141251232132142142132132132142412

&Header3

1231241241313124123213123214124123213213124124123123212

1231231231231231231231231231232131242141241241231325552

213214124123213213213214125123213214

Und meine Quelldatei:

&Header1

&Header3

Rufen Sie daher nur Header 1 und 3 mit den unten stehenden Zahleninformationen ab.

Antwort1

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

Ich bin mir ziemlich sicher, dass es eine ausgefeiltere Möglichkeit gibt, dies entweder mit awkoder perloder vielleicht mit einem einzeiligen sedBefehl zu tun, aber ich wollte Ihnen nur die Logik explizit darlegen. Sie können damit experimentieren und es an Ihre Bedürfnisse anpassen.

verwandte Informationen