2011-06-22 72 views

Trả lời

161

Gửi qua sort (để đặt các mục liền kề nhau) sau đó uniq -c để cung cấp cho đếm, ví dụ:

sort filename | uniq -c 

và để có được rằng danh sách theo thứ tự sắp xếp (theo tần số), bạn có thể

sort filename | uniq -c | sort -nr 
2

Bạn có thể sống với một chữ cái, sắp xếp danh sách:

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

?

green apple 
orange 
red apple 

hoặc

sort -u FILE 

-u là viết tắt của độc đáo, và độc đáo chỉ đạt được thông qua phân loại.

Một giải pháp mà giữ gìn trật tự:

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 

và, với một tập tin

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

cuối cùng hai chỉ loại bỏ bản sao, mà làm theo ngay lập tức - mà phù hợp với ví dụ của bạn.

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

Sẽ in hai quả táo, chia cho một quả chuối.

6

uniq -c file

và trong trường hợp tập tin không được sắp xếp đã:

sort file | uniq -c

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

Hãy thử điều này

cat myfile.txt| sort| uniq 
+0

không có cờ c hoặc d, uniq không phân biệt các dòng trùng lặp từ không trùng lặp hoặc tôi thiếu gì đó không? – drevicko

0

Để chỉ nhận được một số lượng:

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

     3 apple 
     2 green 
     1 oragen 
     2 orange 
     1 red 

Để có được một số được sắp xếp:

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

EDIT

Aha, đây KHÔNG phải là dọc theo ranh giới từ, xấu của tôi.Đây là lệnh để sử dụng cho các dòng đầy đủ:

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

Gần giống như borribles' nhưng nếu bạn thêm d param để uniq nó chỉ cho thấy bản sao.

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

Thumbs up cho ghi chú '-d' nhỏ. – sepehr

Các vấn đề liên quan