テキストファイル内のブロックから情報を抽出する

テキストファイル内のブロックから情報を抽出する

次のようなブロックを含むテキストファイルがあります

dir1/dir2/dir3/name_run_number1:
line1_run_number1_part1
line2_run_number1_part2
line3_run_number1_part3...

各ブロックは空白行で区切られており、各ブロックの「ヘッダー」には「:」があり、各ブロックには「run_」サフィックスの後に固有の「number1」があり、これはブロック内の行にも存在します。

私がやりたいのは、各ブロックについて、最初の行に示されているように「number1」を抽出し、その下の行で1から20までカウントし、「partX」行が欠落している場合はメッセージを表示することです。bashまたはpythonであれば何でも構いません。

ありがとう

答え1

与えられた入力|出力の例に基づいて、次の決定を行うことができます。

awk -F_ '
    /:/ {
        for (i=0;i<20;i++) {
            getline
            sub("chunk","",$7)
            while ( i != +$7 ) {
                print "for " $2 " and " $5"_"$6 " you are missing chunk " i
                i++
                if (i>20)
                    break
                }
            }
    }' text.file

関連情報