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
CMS
VINACMS – Giải pháp xuất bản nội dung hiện đại cho các cơ quan báo chí, cổng thông tin
Quản lý nội dung trên các trang báo điện tử hoặc cổng thông tin điện [...]
CMS
Trang thông tin du lịch được biên soạn bằng hệ thống VINACMS
Trong thế giới phát triển của ngành du lịch trực tuyến, việc có một hệ [...]
CMS
Tìm hiểu các tính năng của hệ thống quản lý nội dung VINACMS
Bạn đang tìm kiếm một giải pháp hoàn hảo cho việc quản lý toà soạn [...]
Blog
Cloudzone Triển Khai Khảo Sát Chất Lượng Dịch Vụ
Cloudzone là một trong những đơn vị hàng đầu trong lĩnh vực CNTT tại Việt [...]
portal cloudzone Blog
Tính Năng Xác Thực Hai Yếu Tố (2FA) trong Portal Cloudzone
Khám phá cách kích hoạt và sử dụng tính năng Xác Thực Hai Yếu Tố [...]
Blog portal cloudzone
Portal Cloudzone – Quản Lý Dịch Vụ CNTT Hiệu Quả và Bảo Mật
Cùng khám phá Portal Cloudzone – hệ thống quản lý dịch vụ CNTT toàn diện [...]