我有一个文本文件,其中包含类似的块
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