次のブロックを含むテキストファイルがあります。
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