我有以下格式的文件A:
Item Sample#
AA LN1
BB LT1
BA LN1
BA LT1
CC LT1
CA LT1
CA LN1
我想要以下输出:
Item Sample# Iteration
AA LN1 1
BB LT1 1
BA LN1 2
BA LT1 2
CC LT1 1
CA LT1 2
CA LN1 2
如果您能为此建议一个简单的unix脚本或awk代码,我将非常感激。
答案 0 :(得分:1)
这个awk应该可以工作:
awk 'NR==1 {
print $0, "Iteration"
}
NR > 1 {
a[$1]++;
b[cnt++]=$0 SUBSEP $1
}
END {
for (i=0; i<length(b); i++) {
split(b[i], c, SUBSEP);
print c[1], a[c[2]]
}
}' file
答案 1 :(得分:1)
awk -v OFS="\t" 'NR==1{print $0,"Iteration";next}
{v[NR]=$0;f[NR]=$1;c[$1]++}END{for(x=2;x<=NR;x++)print v[x],c[f[x]]}' file
上述行输出:
Item Sample# Iteration
AA LN1 1
BB LT1 1
BA LN1 2
BA LT1 2
CC LT1 1
CA LT1 2
CA LN1 2
答案 2 :(得分:1)
awk '
NR==FNR { if (FNR>1) c[$1]++; next }
{ print $0 "\t" (FNR>1 ? c[$1] : "Iteration") }
' file file