より小さい一致ヘッダーを使用して大容量ファイルからテキストを検索する

より小さい一致ヘッダーを使用して大容量ファイルからテキストを検索する

検索するタイトルを見つけるために最初のタイトルがソースファイルと一致する場合は、2つのタイトル間のテキストを抽出する必要があります。たとえば、次のようになります。

&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の1つを使用してこれを行うためのより洗練された方法があると確信していますが、論理を明確に提供したいと思います。これを使用してニーズに合わせて調整できます。perlsed

おすすめ記事