Unix 重新排列列的元素并显示计数

Unix 重新排列列的元素并显示计数,unix,shell,awk,Unix,Shell,Awk,我有这样的文本文件: i am fine how are you what i how are 我需要如下输出: i : 2 am : 1 fine : 1 how : 2 are : 2 you : 1 what : 1 这些词可以有许多重复: 我如何使用shell脚本或awk实现这一点 awk '{ count[$1]++ } END { for (a in count) printf("%s : %d\n", a, count[a]) }' filename awk具有关联

我有这样的文本文件:

i
am 
fine
how
are
you
what
i
how
are
我需要如下输出:

i : 2
am : 1
fine : 1
how : 2
are : 2
you : 1
what : 1
这些词可以有许多重复: 我如何使用shell脚本或awk实现这一点

awk '{ count[$1]++ }
    END { for (a in count) printf("%s : %d\n", a, count[a]) }' filename
awk具有关联数组,并且所有变量都初始化为0,因此上面的操作与预期一样有效

sort | uniq -c
awk具有关联数组,并且所有变量都初始化为0,因此上面的操作与预期一样有效

sort | uniq -c
它对其进行排序,默认情况下,计数在行之前。这样行吗

它对其进行排序,默认情况下,计数在行之前。这样行吗

在Perl中:

perl -le'while (<>){ chomp; $seen{$_}++}; print map { $_ . " : " . $seen{$_} } keys %seen'
在Perl中:

perl -le'while (<>){ chomp; $seen{$_}++}; print map { $_ . " : " . $seen{$_} } keys %seen'

@哦,如果你想维持秩序的话

awk ' { a[$0]++; d[NR]=$0 }
END{
 for(i=1;i<=NR;i++){
    if( ! (d[i] in p)  ){
        print a[d[i]],d[i]
        p[d[i]]
    }
 }
} ' file

@哦,如果你想维持秩序的话

awk ' { a[$0]++; d[NR]=$0 }
END{
 for(i=1;i<=NR;i++){
    if( ! (d[i] in p)  ){
        print a[d[i]],d[i]
        p[d[i]]
    }
 }
} ' file

哎呀,我忘了增量!几个月后哎呀,我忘了增量!几个月后