Bạn có thể đã biết tới câu lệnh sort từ trước, nhưng khi sắp xếp một file bất kì thường đi tới kết quả là có quá nhiều hàng trùng lặp liền kề với nhau và trở nên khó khăn để xem và xử lí các dòng đó.
Về mặt kịch bản, câu lệnh uniq giúp chúng ta chỉ in các dòng trùng lặp 1 lần ở output. Công cụ này thường bỏ qua những lines trùng lặp và chỉ in ra Terminal một lần đối với những dòng đó, giúp chúng ta xem output một cách gọn gàng hơn
Mục lục
Cú pháp
uniq [OPTION]... [INPUT [OUTPUT]]
Ví dụ
Dưới đây là một số ví dụ và chúng ta sẽ đi qua một vài trường hợp cụ thể. Một số thì chỉ cần dùng uniq, còn một số thì cần phải dùng thêm những câu lệnh khác nữa
Với không có tuỳ chọn nào cả
Dưới đây là một file có tên là file2, nó chứa một vài dữ liệu bạn có thể xem phía dưới và nó chưa được sắp xếp theo một thứ tự nhất định, và những dòng trùng lặp cũng chưa đứng kề nhau. Trước khi dùng câu lệnh uniq với file này, chúng ta nên thử sort nó. Tôi đã thử dùng câu lệnh uniq với file gốc, nhưng nó chỉ in output ra như dùng lệnh cat và gần như không có tác dụng gì nhiều. Ở ví dụ tiếp theo tôi đã dùng câu lệnh sort để xử lí files đó trước và dùng câu lệnh uniq ngay sau. Chúng ta sẽ hiểu được cách câu lệnh uniq xử lí file như thế nào
$ cat file2 ChhatrapatiShahuMaharaj Dr.B.R.Ambedkar Budhha Dr.B.R.Ambedkar Budhha Dr.B.R.Ambedkar Budhha $ uniq file2 ChhatrapatiShahuMaharaj Dr.B.R.Ambedkar Budhha Dr.B.R.Ambedkar Budhha Dr.B.R.Ambedkar Budhha $ sort file2 Budhha Budhha Budhha ChhatrapatiShahuMaharaj Dr.B.R.Ambedkar Dr.B.R.Ambedkar Dr.B.R.Ambedkar $ sort file2 | uniq Budhha ChhatrapatiShahuMaharaj Dr.B.R.Ambedkar
Với tuỳ chọn -c, –count
Tham số -c cho phép chúng ta đếm số lần lặp lại của một dòng bất kì. Uniq sẽ in ra số lần lặp lại của dòng ở đầu dòng đó
$ sort file2 | uniq -c 3 Budhha 1 ChhatrapatiShahuMaharaj 3 Dr.B.R.Ambedkar
Với tuỳ chọn -d, –repeated option
Tham số -d chỉ in ra những dòng được lặp lại (Chỉ in ra 1 lần) và bỏ qua các dòng không bị lặp lại
$ sort file2 | uniq -d Budhha Dr.B.R.Ambedkar
Ở ví dụ dưới. Tôi đã sử dụng kèm với tham số -c để kiểm tra rằng có phải tham số -d khiến uniq chỉ in ra những hàng được lặp lại hay không
$ sort file2 | uniq -cd 3 Budhha 3 Dr.B.R.Ambedkar
Với tuỳ chọn -D, –all-repeated option
Tham số -D sẽ in ra nhữn dòng được lặp lại (Lặp lại bao nhiêu lần in ra bấy nhiêu lần) và cũng bỏ qua các dòng không bị lặp lại
$ sort file2 | uniq -D Budhha Budhha Budhha Dr.B.R.Ambedkar Dr.B.R.Ambedkar Dr.B.R.Ambedkar
Với tuỳ chọn -u, –unique
Tham số -u sẽ chỉ in ra những dòng chỉ xuất hiện một lần, không in ra các dòng bị lặp lại
$ sort file2 | uniq -u ChhatrapatiShahuMaharaj
Với tuỳ chọn -i, –ignore-case
Với tuỳ chọn -i bạn có thể bỏ qua sự phân biệt hoa/thường của kí tự. Dưới đây là ví dụ khi dùng uniq có tham số -i và không có -i
$ cat file3 aaaa aaaa AAAA AAAA bbbb BBBB $ uniq file3 aaaa AAAA bbbb BBBB $ uniq -i file3 aaaa bbbb
Với tuỳ chọn -f, –skip-fields=N
Đôi khi chúng ta cần bỏ qua một số fields để lọc ra các dòng trùng nhau. Điều này có thể sử dụng tham số -f. Trong ví dụ ở dưới, chúng ta sẽ bỏ qua fields đầu tiên (Cột thứ nhất) để so sánh các dòng trùng lặp từ fields thứ hai. Tôi sẽ đưa ra cả 2 ví dụ có và không có tham số -f, để giúp các bạn dễ hiểu hơn
$ cat file5 Amit aaaa Ajit aaaa Advi bbbb Kaju bbbb $ uniq file5 Amit aaaa Ajit aaaa Advi bbbb Kaju bbbb $ uniq -f 1 file5 Amit aaaa Advi bbbb
Với tuỳ chọn -s, –skip-char=N
Như đối với field, chúng ta có thể bỏ qua kí tự bằng cách sử dụng tuỳ chọn -s. Hãy lưu ý trong đầu rằng nếu một dòng bị lặp thì uniq chỉ in ra dòng xuất hiện đầu tiên và bỏ qua các dòng còn lại. Vì vậy 33aa và 55bb đã bị loại bỏ. Đây là ví dụ
$ cat file4 22aa 33aa 44bb 55bb $ uniq file4 22aa 33aa 44bb 55bb $ uniq -s 2 file4 22aa 44bb
Với tuỳ chọn -w, –check-chars=N
Như việc bỏ qua các kí tự, chúng ta có thể chọn chỉ xem xét một kí tụ cụ thể sử dụng tham số -w, đây là một ví dụ
$ cat file6 aa12 aa34 bb56 bb78 $ uniq file6 aa12 aa34 bb56 bb78 $ uniq -w 2 file6 aa12 bb56
Với tuỳ chọn –version
Tuỳ chọn –version giúp bạn xem phiên bản của uniq, đơn giản vậy thôi
uniq --version uniq (GNU coreutils) 8.4 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Richard M. Stallman and David MacKenzie.
Bảng tổng hợp
Được dịch từ RedHat
Máy chủ vật lý
4 Lợi Ích Thiết Thực Mà Máy Chủ Vật Lý Mang Lại Cho Doanh Nghiệp
Trong thời đại chuyển đổi số mạnh mẽ như hiện nay, việc đầu tư vào [...]
Giải pháp
Cách Phòng Chống DDoS Cho Website, VPS, và Server Hiệu Quả
Các cuộc tấn công DDoS (Distributed Denial of Service) là một mối đe dọa lớn [...]
Chưa được phân loại portal portal cloudzone Về Portal
Mã đăng nhập Portal Cloudzone là gì? 3 cách lấy mã đăng nhập
Ngày nay, khi công nghệ số phát triển mạnh mẽ, việc bảo mật thông tin [...]
Cloud hosting Blog
So sánh Cloud Hosting cPanel, DirectAdmin và Plesk
Khi lựa chọn dịch vụ Cloud Hosting để lưu trữ website hoặc ứng dụng, một [...]
Cloud VPS
[2024] Kinh Nghiệm Chọn VPS Treo Game Không Lo Gián Đoạn
Với sự phát triển nhanh chóng của các trò chơi trực tuyến, việc duy trì [...]
Blog
Tuyển Đại lý dịch vụ Cloud – Chiết khấu đến 35%
Cloudzone tuyển đại lý dịch vụ Cloud, Data Center với lợi nhuận không giới hạn, [...]