Bạn có thể dễ dàng làm điều này với các lệnh tích hợp.
- Cung cấp nội dung của tập tin
sort
. Chúng tôi cần điều này cho bước tiếp theo.
- Điều này đi đến
uniq -c
. Nó sẽ tính sự xuất hiện duy nhất của mỗi dòng. Nếu các dòng tương tự không liền kề, điều này sẽ không hoạt động mà không sắp xếp trước.
- Sau đó, đưa nó đến một cái khác
sort
, bây giờ sắp xếp theo thứ tự đảo ngược ( r
) và dựa trên việc n
giải thích số ( ) của uniq
đầu ra. Chúng ta cần tùy chọn số vì nếu không, khoảng trắng phía trước các số sẽ dẫn đến kết quả sai (xem trợ giúp của GNUsort
để biết thêm).
- Cuối cùng, chỉ hiển thị mười hai dòng đầu tiên với
head
.
Lệnh sau đó sẽ là:
sort test.txt | uniq -c | sort -rn | head -n 12
Đầu ra ở đây chứa số lượng thực tế của các lần xuất hiện.
Để chỉ nhận danh sách các dòng thô, bạn có thể dẫn đầu ra tới sed
:
sort test.txt | uniq -c | sort -rn | head -n 12 | sed -E 's/^ *[0-9]+ //g'
Thí dụ:
I'm not there very often
I'm not there very often
Look at me!
Look at me!
Look at me!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
Hello there!
Đầu ra từ lệnh đầu tiên, nhưng chỉ chọn 2 từ head
:
6 Hello there!
3 Look at me!
Đầu ra từ lệnh thứ hai:
Hello there!
Look at me!