Công cụ dòng lệnh do POSIX chỉ địnhuniq
được thiết kế để "báo cáo hoặc lọc ra các dòng lặp lại trong một tệp." Ngoài các trường hợp sử dụng liên quan đến các dòng đầy đủ để so sánh, có hai tùy chọn để so sánh một phần dòng:
-f <number>
bỏ qua các<number>
trường đầu tiên và-s <number>
để bỏ qua các<number>
ký tự đầu tiên (bắt đầu sau bất kỳ trường bị bỏ qua nào-f
).
Điều tôi không hiểu là tại sao tính năng này không bao giờ được thêm vào uniq
để cho phép bỏ qua tất cả trừ các <number>
trường đầu tiên .
Một thành ngữ Awk phổ biến là:
awk '!a[$1]++'
trong đó chỉ in các dòng chứa sự xuất hiện đầu tiên của trường đầu tiên của chúng.
Điều này dường như luôn luôn đối với tôi rất giống với chức năng của uniq
.
Tất nhiên sẽ tốt cho các công cụ chồng lấp, nhưng có lý do nào dựa trên lịch sử hoặc triết học UNIX không bao gồm chức năng song song -f
, chỉ xem xét các trường ____ đầu tiên không?