awk计数事件和输出计数,并输出上次计数事件的完整记录

awk计数事件和输出计数,并输出上次计数事件的完整记录,awk,Awk,我想在单个列中计算发生次数,并输出这些发生次数的计数以及最后一次计数的完整记录 这对于计数很有效,但也希望从输出中获得更多描述 awk '{count[$1]++}END{for(j in count) print j,""count[j]""}' 如果输入为: A horse pen A dog apple B cat house C mouse grape C mouse shoe C elephant pole 产出将是: A 2 dog apple B 1 cat house C 3

我想在单个列中计算发生次数,并输出这些发生次数的计数以及最后一次计数的完整记录

这对于计数很有效,但也希望从输出中获得更多描述

awk '{count[$1]++}END{for(j in count) print j,""count[j]""}'
如果输入为:

A horse pen
A dog apple
B cat house
C mouse grape
C mouse shoe
C elephant pole
产出将是:

A 2 dog apple
B 1 cat house
C 3 elephant pole

这应该是可行的,但要注意,订单保留并没有得到保证

awk '{k=$1; a[k]++; $1="";
     sub(/^ +/, "", $0); b[k]=$0};
     END{for (k in a) print k, a[k], b[k]}' file.txt
A 2 dog apple
B 1 cat house
C 3 elephant pole

如果订单对您至关重要,请使用
GNU awk
尝试以下操作:

awk '{
  ary[$1]++; line[$1] = $2 FS $3
}
END { 
  n = asorti(ary, sorted_ary)
  for(i = 1; i <= n; i++) {
    print sorted_ary[i], ary[sorted_ary[i]], line[sorted_ary[i]]
  }
}' file
$awk'{
元[$1]++;行[$1]=$2fs$3
}
结束{
n=asorti(ari,排序的_ari)
对于(i=1;i
$ cat file
A horse pen
A dog apple
B cat house
C mouse grape
C mouse shoe
C elephant pole
$    awk '{
  ary[$1]++; line[$1] = $2 FS $3
}
END { 
  n = asorti(ary, sorted_ary)
  for(i = 1; i <= n; i++) {
    print sorted_ary[i], ary[sorted_ary[i]], line[sorted_ary[i]]
  }
}' file
A 2 dog apple
B 1 cat house
C 3 elephant pole