0

我有一个格式如下的fileA:

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 代码,我将不胜感激。

4

3 回答 3

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
于 2013-07-24T19:17:26.360 回答
1
awk '
NR==FNR { if (FNR>1) c[$1]++; next }
{ print $0 "\t" (FNR>1 ? c[$1] : "Iteration") }
' file file
于 2013-07-25T08:34:32.023 回答
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
于 2013-07-24T19:40:21.520 回答