awk 从 file1 中按顺序查找缺失的数字并在匹配/扩展问题后追加到 file2 中的列

awk find missing number in sequence from file1 and append to column in file2 after match / extended question

您好,我发帖是为了参考上一篇。以前回答的问题扩展问题 我想在比较两个文件列 $1、$2、$3 后按顺序生成下一个可用数字

我试过这样做

awk 'NR==FNR{a[[=10=]]=[=10=]; next}  in a{print [=10=] && b[$NF]; next} {while(++c in b); print [=10=], c}' file1 file2 

它只是 return 下面:只是 2,3,4,5

A-5 ID2548 A550 SEQ.8232 md5 8232 71192160 COMPRESSED 5 false 0 verfied _xx 2
A-5 ID2548 A550 SEQ.8233 md5 8233 71192160 COMPRESSED 2 true 0 verfied _xx 3
B-8 ID3285 A400 SEQ.59060 md5 192 209763200 UNCOMPRESSED 1 false 0 verfied _xx 4
B-8 ID3285 A400 SEQ.59060 md5 193 262192000 COMPRESSED 16 true 0 verfied _xx 5

文件 1

A-5 ID2548 A550 85 S-38 COMPRESSED 1
B-8 ID3285 A400 81 B-22 UNCOMPRESSED 1

文件2

A-5 ID2548 A550 SEQ.8232 md5 8232 71192160 COMPRESSED 5 false 0 verfied _xx
A-5 ID2548 A550 SEQ.8233 md5 8233 71192160 COMPRESSED 2 true 0 verfied _xx
B-8 ID3285 A400 SEQ.59060 md5 192 209763200 UNCOMPRESSED 1 false 0 verfied _xx
B-8 ID3285 A400 SEQ.59060 md5 193 262192000 COMPRESSED 16 true 0 verfied _xx

期望的结果:

A-5 ID2548 A550 SEQ.8232 md5 8232 71192160 COMPRESSED 5 false 0 verfied _xx 2
A-5 ID2548 A550 SEQ.8233 md5 8233 71192160 COMPRESSED 2 true 0 verfied _xx 3
B-8 ID3285 A400 SEQ.59060 md5 192 209763200 UNCOMPRESSED 1 false 0 verfied _xx 2
B-8 ID3285 A400 SEQ.59060 md5 193 262192000 UNCOMPRESSED 16 true 0 verfied _xx 3
awk 'NR==FNR{vals[,$NF]; next} {while ((,++incr[]) in vals); print [=10=], incr[]}' file1 file2

改编自

awk 'NR==FNR {vals[,,,$NF]; next}
    {
        while ((,,,++incr[,,]) in vals)
        print [=10=], incr[,,]
    }' file1 file2

读取file1时,关键字段(在本例中为</code>、<code></code>)被添加到已使用值的数组中。它们之间用逗号隔开——<code>awk会使用一个特殊的变量SUBSEP来实现多维数组。

当读取 file2 时,顺序递增的变量是一个引用关联键字段的数组。