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 awk
oder perl
oder vielleicht mit einem einzeiligen sed
Befehl zu tun, aber ich wollte Ihnen nur die Logik explizit darlegen. Sie können damit experimentieren und es an Ihre Bedürfnisse anpassen.