2011-06-22 65 views

回答

161

發送它通過sort(把相鄰的項目一起)然後uniq -c個給計數,即:

sort filename | uniq -c 

,並得到有序那個列表(變頻),你可以

sort filename | uniq -c | sort -nr 
2

你能活下去以字母,有序列表:

echo "red apple 
> green apple 
> green apple 
> orange 
> orange 
> orange 
> " | sort -u 

green apple 
orange 
red apple 

sort -u FILE 

-u代表獨特,和唯一性只有通過分揀達到。

它保留了順序的解決方案:

echo "red apple 
green apple 
green apple 
orange 
orange 
orange 
" | { old=""; while read line ; do if [[ $line != $old ]]; then echo $line; old=$line; fi ; done } 
red apple 
green apple 
orange 

,並以文件

cat file | { 
old="" 
while read line 
do 
    if [[ $line != $old ]] 
    then 
    echo $line 
    old=$line 
    fi 
done } 

最後兩個僅除去重複的,其緊跟 - 這符合你的例子。

echo "red apple 
green apple 
lila banana 
green apple 
" ... 

將打印兩個蘋果,由一根香蕉分割。

6

uniq -c file

並且如果該文件尚未排序:

sort file | uniq -c

1
cat <filename> | sort | uniq -c 
3

試試這個

cat myfile.txt| sort| uniq 
+0

沒有-c或-d標誌,uniq不區分重複行和非重複行,還是我錯過了某些東西? – drevicko

0

只得到一個數:

$> egrep -o '\w+' fruits.txt | sort | uniq -c 

     3 apple 
     2 green 
     1 oragen 
     2 orange 
     1 red 

要獲得已分類計數:

$> egrep -o '\w+' fruits.txt | sort | uniq -c | sort -nk1 
     1 oragen 
     1 red 
     2 green 
     2 orange 
     3 apple 

編輯

啊哈,這不是沿着字界,我的壞。下面是要使用的命令完全行:

$> cat fruits.txt | sort | uniq -c | sort -nk1 
     1 oragen 
     1 red apple 
     2 green apple 
     2 orange 
36

幾乎相同borribles',但如果添加d參數去uniq那隻能說明重複。

sort filename | uniq -cd | sort -nr 
+1

豎起小小的「d」字條。 – sepehr

相關問題