검색할 제목을 찾기 위해 첫 번째 제목이 소스 파일과 일치하는 경우 두 제목 사이의 텍스트를 추출해야 합니다. 예를 들면 다음과 같습니다.
&Header1
1231241241313124123213123214124123213213124124123123212
1231231231231231231231231231232131242141241241231325552
2132141241232132132132141251232132142142132132132142412
&Header2
1231241241313124123213123214124123213213124124123123212
2132141241232132132132141251232132142142132132132142412
&Header3
1231241241313124123213123214124123213213124124123123212
1231231231231231231231231231232131242141241241231325552
213214124123213213213214125123213214
그리고 내 소스 파일은 다음과 같습니다.
&Header1
&Header3
따라서 헤더 1, 3과 다음의 숫자 정보만 검색됩니다.
답변1
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
단일 선형 명령 awk
중 하나를 사용하여 이 작업을 수행하는 더 정교한 방법이 있다고 확신 하지만 논리를 명확하게 제공하고 싶습니다. 이를 사용하고 필요에 맞게 조정할 수 있습니다.perl
sed