Awk Gwak,计数器的使用

Awk Gwak,计数器的使用,awk,Awk,我有这样一个文件: 22710005 Bra000017 22710005 Bra000017 22710005 CUSTOM22710675_oT.1 Bra000032_oG.1 CUSTOM22710675_oT.1 Bra000032_oG.1 22712128 Bra000040 22712128 Bra000040 22712128 22712128 Bra000040 22712128

我有这样一个文件:

22710005    Bra000017   22710005    Bra000017   22710005
CUSTOM22710675_oT.1 Bra000032_oG.1          
CUSTOM22710675_oT.1 Bra000032_oG.1          
22712128    Bra000040   22712128    Bra000040   22712128
22712128    Bra000040   22712128    Bra000040   22712128
我得到以下输出:

Bra010450   Bra010450   Bra010450   Bra010450   22722931
Bra010450   Bra010450   Bra010450   Bra010450   22722932
Bra000040   Bra000040   Bra000040   Bra000040   22712128
Bra000040   Bra000040   Bra000040   Bra000040   22712128
Bra000078   Bra000078   Bra000078   Bra000078   22707965
使用此命令:

gawk '{if (match($1,/(_[ox]T\.[0-9]*)/,a)) if (match($2,/([A-Za-z0-9]*)(_[jox]G\.[0-9]*)/,b)) {print b[1]""a[1]"\t"b[1]""b[2]"\tNA\tNA\tNA"} else {print $2""a[1]"\t"$2"\t"$2"\tNA\tNA"} else if (match($1,/(_[j]\.[0-9]*)/,c)) {print $4""c[1]"\t"$2"\t"$2"\tNA\tNA"} else if (match($1,/TCONS/,d)) {print $1"\t"$2"\tNA\tNA\tNA"} else {print $4"\t"$2"\t"$2"\t"$4"\t"$5}}' tmp3 > tmp4

如果您看到我输出的前两行,那么除了最后一行之外,它们是相等的。我想知道,如果最后一个字段中的数字不同,我怎么能在gwak中使用计数器来获得第一行Bra010450_1和Bra010450_2?

您可以使用awk'{print$1++arr[$1]}您的awk阅读/理解起来非常复杂。最好告诉我们你想要什么以及如何得到它。这样我们就可以了解如何获得正确的数据。您正在使用uu下划线作为数组名,为什么?让它更难阅读。我同意这很难阅读。超过80个字符的代码不是1行程序;-!考虑重新格式化,因此您的流控制逻辑在缩进中是显而易见的。另外,不清楚,您的输入是否有1行5个字段、2行2个字段和2行以上5个字段?祝你好运