ôi
 awk '!a[$1]++' file
Đây là một cách viết rất cô đọng này:
awk '{if(! a[$1]){print; a[$1]++}}' file
Vì vậy, nếu trường đầu tiên hiện tại ( $1) không nằm trong amảng, hãy in dòng và thêm trường thứ 1 vào a. Lần sau chúng ta thấy trường đó, nó sẽ nằm trong mảng và do đó sẽ không được in.
 
Perl
perl -ane '$k{$F[0]}++ or print' file
hoặc là
perl -ane 'print if !$k{$F[0]}++' file
Điều này về cơ bản là giống như awkmột. Các -nnguyên nhân perl để đọc dòng tệp đầu vào theo dòng và áp dụng tập lệnh được cung cấp -echo mỗi dòng. Các -asẽ tự động tách mỗi dòng trên khoảng trắng và lưu các lĩnh vực kết quả là @Fmảng. Cuối cùng, trường đầu tiên được thêm vào %khàm băm và nếu nó chưa có ở đó, dòng được in. Điều tương tự có thể được viết là
perl -e 'while(<>){
            @F=split(/\s+/); 
            print unless defined($k{$F[0]}); 
            $k{$F[0]}++;
         }' file
 
Coreutils
rev file | uniq -f 1 | rev
Phương pháp này hoạt động bằng cách trước tiên đảo ngược các dòng filesao cho nếu một dòng là 12 345 thì bây giờ sẽ là 543 21. Sau đó, chúng ta sử dụng uniq -f 1để bỏ qua trường đầu tiên, nghĩa là cột 543 nằm trong. Có các trường trong file. Sử dụng uniqở đây có tác dụng lọc ra bất kỳ dòng trùng lặp nào, chỉ giữ lại mỗi dòng. Cuối cùng, chúng tôi đặt các dòng trở lại trật tự ban đầu của họ với một đảo ngược khác.
 
Sắp xếp GNU (theo đề xuất của @ StéphaneChazelas)  
sort -buk1,1
Các -bcờ lờ hàng đầu khoảng trắng và các -uphương tiện in ruộng chỉ độc đáo. Các bit thông minh là -k1,1. Các -klá cờ đặt trường để sắp xếp trên. Nó có định dạng chung -k POS1[,POS2]có nghĩa là chỉ nhìn vào các trường POS1thông qua POS2 khi sắp xếp. Vì vậy, -k1,1có nghĩa là chỉ nhìn vào lĩnh vực 1. Tùy thuộc vào dữ liệu của bạn, bạn có thể muốn thêm một trong các tùy chọn sau:
 -g, --general-numeric-sort
      compare according to general numerical value
 -n, --numeric-sort
      compare according to string numerical value