67 Nguyễn Thị Định, Phường An Hải, TP. Đà Nẵng
Hướng dẫn

Sử dụng câu lệnh uniq để xử lí danh sách

Sử dụng câu lệnh uniq để xử lí danh sách
Chia sẻ

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

Các dòng trong tệp cần xử lí bởi uniq command không được dài quá 2048 bytes (Bao gồm bất cứ kí tự mới nào) cũng như không được chứa kí tự null

Mục lục

Cú pháp
Ví dụ

Với không có tuỳ chọn nào cả
Với tuỳ chọn -c, –count
Với tuỳ chọn -d, –repeated option
Với tuỳ chọn -D, –all-repeated option
Với tuỳ chọn -u, –unique
Với tuỳ chọn -i, –ignore-case
Với tuỳ chọn -f, –skip-fields=N
Với tuỳ chọn -s, –skip-char=N
Với tuỳ chọn -w, –check-chars=N
Với tuỳ chọn –version

Bảng tổng hợp

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 . 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.
Chia sẻ

Bài viết liên quan

Tối ưu chi phí hạ tầng: chọn đúng cấu hình, thuê theo nhu cầu

Tối ưu chi phí hạ tầng: chọn đúng cấu hình, thuê theo nhu cầu

Cách giảm chi phí hạ tầng hợp lý: chọn đúng cấu hình (right-sizing), thuê theo nhu cầu, kết hợp dịch vụ và rà soát tài nguyên định kỳ mà không ảnh hưởng vận hành

Cách săn khuyến mãi VPS/máy chủ, tránh bẫy giá rẻ

Cách săn khuyến mãi VPS/máy chủ, tránh bẫy giá rẻ

Cách tận dụng khuyến mãi VPS và máy chủ hợp lý, đọc kỹ điều kiện gia hạn và nhận biết bẫy giá rẻ ảnh hưởng chất lượng dịch vụ

Chọn nhà cung cấp VPS/máy chủ: tiêu chí cần kiểm tra

Chọn nhà cung cấp VPS/máy chủ: tiêu chí cần kiểm tra

Các tiêu chí chọn nhà cung cấp VPS và máy chủ: uptime/SLA, hạ tầng data center, peering, hỗ trợ kỹ thuật và chính sách hoàn tiền, kèm cách đọc cam kết dịch vụ

Phần mềm mã nguồn mở thay thế để tiết kiệm bản quyền

Phần mềm mã nguồn mở thay thế để tiết kiệm bản quyền

Gợi ý các phần mềm mã nguồn mở thay thế giải pháp có phí cho máy chủ: hệ điều hành, cơ sở dữ liệu, web server, control panel và ảo hóa, kèm lưu ý chi phí vận hành

So sánh bản quyền control panel: cPanel, DirectAdmin, Plesk

So sánh bản quyền control panel: cPanel, DirectAdmin, Plesk

So sánh cPanel, DirectAdmin và Plesk về tính năng, hệ điều hành hỗ trợ và chi phí bản quyền, kèm gợi ý chọn control panel theo số website và nhu cầu

Các loại bản quyền Windows Server và cách chọn cho đúng

Các loại bản quyền Windows Server và cách chọn cho đúng

Hiểu cấp phép Windows Server theo core, CAL và các kênh OEM/Volume/CSP, phân biệt Standard và Datacenter để chọn bản quyền phù hợp và hợp lệ