2010-02-01 82 views
1

我有文本文件是這樣的:重新排列列的元素和顯示計數

i 
am 
fine 
how 
are 
you 
what 
i 
how 
are 

我需要的輸出象下面這樣:

i : 2 
am : 1 
fine : 1 
how : 2 
are : 2 
you : 1 
what : 1 

有可能的話很多repititions: 我怎麼可能使用shell腳本或awk來執行此操作?

回答

4
sort | uniq -c 

它對它進行排序,計數在默認行之前。這會起作用嗎?

+0

是這部作品:) – Vijay 2010-02-01 06:59:05

+0

這人應該是接受的答案恕我直言。 – Ether 2010-02-01 07:16:16

1
awk '{ count[$1]++ } 
    END { for (a in count) printf("%s : %d\n", a, count[a]) }' filename 

awk有關聯數組,所有變量都被初始化爲0,所以上面的工作方式和預期一樣。

-1

在Perl:

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

哎呀,我忘了增量! (幾個月後......):) – Ether 2010-07-18 17:19:41

0

@OP,如果你想保留的順序

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 

輸出

$ ./shell.sh 
2 i 
1 am 
1 fine 
2 how 
2 are 
1 you 
1 what