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
时,顺序递增的变量是一个引用关联键字段的数组。
您好,我发帖是为了参考上一篇。以前回答的问题扩展问题
我试过这样做
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
时,顺序递增的变量是一个引用关联键字段的数组。