嗨,我张贴作为参考的prev。对于先前回答的awk find missing number in sequence from file1 and append to column in file2的问题扩展问题,在对两个文件列$1、$2、$3进行比较之后,我想按顺序生成下一个可用的数字
我试过这样做
awk 'NR==FNR{a[$0]=$0; next} $1 in a{print $0 && b[$NF]; next} {while(++c in b); print $0, c}' file1 file2 它只是返回到下面:只有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 5file1
A-5 ID2548 A550 85 S-38 COMPRESSED 1
B-8 ID3285 A400 81 B-22 UNCOMPRESSED 1file2
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发布于 2020-05-12 23:05:20
改编自answer to your previous quesion
awk 'NR==FNR {vals[$1,$2,$3,$NF]; next}
{
while (($1,$2,$3,++incr[$1,$2,$3]) in vals)
print $0, incr[$1,$2,$3]
}' file1 file2读取file1时,关键字段(在本例中为$1、$2和$3 )将添加到已经使用的值数组中。它们之间用逗号分隔- awk将使用一个特殊的变量SUBSEP来实现多维数组。
在读取file2时,顺序递增的变量是一个数组,它引用相关的键字段。
发布于 2020-05-12 03:10:46
awk 'NR==FNR{vals[$1,$NF]; next} {while (($1,++incr[$1]) in vals); print $0, incr[$1]}' file1 file2https://stackoverflow.com/questions/61735828
复制相似问题