我有文本文件是這樣的:重新排列列的元素和顯示計數
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來執行此操作?
我有文本文件是這樣的:重新排列列的元素和顯示計數
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來執行此操作?
sort | uniq -c
它對它進行排序,計數在默認行之前。這會起作用嗎?
awk '{ count[$1]++ }
END { for (a in count) printf("%s : %d\n", a, count[a]) }' filename
awk
有關聯數組,所有變量都被初始化爲0,所以上面的工作方式和預期一樣。
在Perl:
perl -le'while (<>){ chomp; $seen{$_}++}; print map { $_ . " : " . $seen{$_} } keys %seen'
哎呀,我忘了增量! (幾個月後......):) – Ether 2010-07-18 17:19:41
@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
是這部作品:) – Vijay 2010-02-01 06:59:05
這人應該是接受的答案恕我直言。 – Ether 2010-02-01 07:16:16