Cách tìm dữ liệu trùng lặp trong tệp văn bản Linux với uniq

Cách tìm dữ liệu trùng lặp trong tệp văn bản Linux với uniq

Bạn đã bao giờ bắt gặp các tệp văn bản với các dòng lặp lại và các từ trùng lặp chưa? Có thể bạn thường xuyên làm việc với đầu ra lệnh và muốn lọc chúng cho các chuỗi riêng biệt. Khi nói đến các tệp văn bản và loại bỏ dữ liệu thừa trong Linux, lệnh uniq là lựa chọn tốt nhất của bạn.





Trong bài viết này, chúng ta sẽ thảo luận chuyên sâu về lệnh uniq, cùng với hướng dẫn chi tiết về cách sử dụng lệnh để loại bỏ các dòng trùng lặp khỏi tệp văn bản.





Lệnh uniq là gì?

Lệnh uniq trong Linux được sử dụng để hiển thị các dòng giống hệt nhau trong tệp văn bản. Lệnh này có thể hữu ích nếu bạn muốn xóa các từ hoặc chuỗi trùng lặp khỏi tệp văn bản. Vì lệnh uniq khớp với các dòng liền kề để tìm các bản sao thừa, nó chỉ hoạt động với các tệp văn bản đã được sắp xếp.





May mắn thay, bạn có thể tẩu loại lệnh với uniq để tổ chức tệp văn bản theo cách tương thích với lệnh. Ngoài việc hiển thị các dòng lặp lại, lệnh uniq cũng có thể đếm sự xuất hiện của các dòng trùng lặp trong tệp văn bản.

Cách sử dụng lệnh uniq

Có nhiều tùy chọn và cờ khác nhau mà bạn có thể sử dụng với uniq. Một số trong số đó là cơ bản và thực hiện các thao tác đơn giản như in các dòng lặp lại, trong khi một số khác dành cho người dùng nâng cao thường xuyên làm việc với các tệp văn bản trên Linux.



Cú pháp cơ bản

Cú pháp cơ bản của lệnh uniq là:

uniq option input output

...ở đâu Lựa chọn là cờ được sử dụng để gọi các phương thức cụ thể của lệnh, đầu vào là tệp văn bản để xử lý và đầu ra là đường dẫn của tệp sẽ lưu trữ kết quả đầu ra.





Các đầu ra đối số là tùy chọn và có thể bị bỏ qua. Nếu người dùng không chỉ định tệp đầu vào, uniq sẽ lấy dữ liệu từ đầu ra chuẩn làm đầu vào. Điều này cho phép người dùng chuyển uniq với các lệnh Linux khác .

Tệp văn bản mẫu

Chúng tôi sẽ sử dụng tệp văn bản Dupate.txt làm đầu vào cho lệnh.





127.0.0.1 TCP
127.0.0.1 UDP
Do catch this
DO CATCH THIS
Don't match this
Don't catch this
This is a text file.
This is a text file.
THIS IS A TEXT FILE.
Unique lines are really rare.

Lưu ý rằng chúng tôi đã sắp xếp tệp văn bản này bằng cách sử dụng loại chỉ huy. Nếu bạn đang làm việc với một số tệp văn bản khác, bạn có thể sắp xếp nó bằng lệnh sau:

sort filename.txt > sorted.txt

Xóa các dòng trùng lặp

Việc sử dụng cơ bản nhất của uniq là loại bỏ các chuỗi lặp lại khỏi đầu vào và in đầu ra duy nhất.

uniq duplicate.txt

Đầu ra:

Lưu ý rằng hệ thống không hiển thị lần xuất hiện thứ hai của dòng Đây là một tệp văn bản . Ngoài ra, lệnh nói trên chỉ in các dòng duy nhất trong tệp và không ảnh hưởng đến nội dung của tệp văn bản gốc.

Đếm các dòng lặp lại

Để xuất số dòng lặp lại trong tệp văn bản, hãy sử dụng -NS gắn cờ bằng lệnh mặc định.

uniq -c duplicate.txt

Đầu ra:

Hệ thống hiển thị số lượng từng dòng tồn tại trong tệp văn bản. Bạn có thể thấy rằng dòng Đây là một tệp văn bản xảy ra hai lần trong tệp. Theo mặc định, lệnh uniq có phân biệt chữ hoa chữ thường.

Để chỉ in các dòng trùng lặp từ tệp văn bản, hãy sử dụng -NS lá cờ. Các -NS viết tắt của Bản sao .

uniq -D duplicate.txt

Hệ thống sẽ hiển thị đầu ra như sau.

This is a text file.
This is a text file.

Bỏ qua các trường trong khi kiểm tra các trường trùng lặp

Nếu bạn muốn bỏ qua một số trường nhất định trong khi khớp các chuỗi, bạn có thể sử dụng -NS cờ bằng lệnh. Các -NS viết tắt của Đồng ruộng .

Hãy xem xét tệp văn bản sau fields.txt .

192.168.0.1 TCP
127.0.0.1 TCP
354.231.1.1 TCP
Linux FS
Windows FS
macOS FS

Để bỏ qua trường đầu tiên:

uniq -f 1 fields.txt

Đầu ra:

192.168.0.1 TCP
Linux FS

Lệnh nói trên đã bỏ qua trường đầu tiên (địa chỉ IP và tên hệ điều hành) và khớp với từ thứ hai (TCP và FS). Sau đó, nó hiển thị lần xuất hiện đầu tiên của mỗi trận đấu dưới dạng đầu ra.

Bỏ qua các ký tự khi so sánh

Giống như bỏ qua các trường, bạn cũng có thể bỏ qua các ký tự. Các -NS cờ cho phép bạn chỉ định số ký tự cần bỏ qua trong khi khớp các dòng trùng lặp. Tính năng này hữu ích khi dữ liệu bạn đang làm việc ở dạng danh sách như sau:

cách tải phim về máy tính xách tay
1. First
2. Second
3. Second
4. Second
5. Third
6. Third
7. Fourth
8. Fifth

Để bỏ qua hai ký tự đầu tiên (số thứ tự danh sách) trong tệp list.txt :

uniq -s 2 list.txt

Đầu ra:

Trong kết quả đầu ra ở trên, hai ký tự đầu tiên bị bỏ qua và phần còn lại của chúng được so khớp cho các dòng duy nhất.

Kiểm tra số ký tự N đầu tiên để tìm trùng lặp

Các -trong cờ cho phép bạn chỉ kiểm tra một số ký tự cố định để tìm các bản sao. Ví dụ:

uniq -w 2 duplicate.txt

Lệnh nói trên sẽ chỉ khớp với hai ký tự đầu tiên và sẽ in ra các dòng duy nhất nếu có.

Đầu ra:

Xóa phân biệt chữ hoa chữ thường

Như đã đề cập ở trên, uniq phân biệt chữ hoa chữ thường khi khớp các dòng trong tệp. Để bỏ qua trường hợp ký tự, hãy sử dụng -tôi tùy chọn bằng lệnh.

uniq -i duplicate.txt

Bạn sẽ thấy kết quả sau.

Lưu ý trong đầu ra ở trên, uniq không hiển thị các dòng LÀM VIỆC NÀYĐÂY LÀ TẬP TIN VĂN BẢN .

Gửi đầu ra tới tệp

Để gửi đầu ra của lệnh uniq tới một tệp, bạn có thể sử dụng Chuyển hướng đầu ra ( > ) ký tự như sau:

uniq -i duplicate.txt > otherfile.txt

Trong khi gửi đầu ra đến tệp văn bản, hệ thống không hiển thị đầu ra của lệnh. Bạn có thể kiểm tra nội dung của tệp mới bằng cách sử dụng con mèo chỉ huy.

cat otherfile.txt

Bạn cũng có thể sử dụng các cách khác để gửi đầu ra dòng lệnh tới một tệp trong Linux .

Phân tích dữ liệu trùng lặp với uniq

Hầu hết thời gian trong khi quản lý các máy chủ Linux, bạn sẽ làm việc trên thiết bị đầu cuối hoặc chỉnh sửa các tệp văn bản. Do đó, biết cách loại bỏ các bản sao thừa của các dòng trong tệp văn bản có thể là một tài sản tuyệt vời cho bộ kỹ năng Linux của bạn.

Làm việc với các tệp văn bản có thể gây khó chịu nếu bạn không biết cách lọc và sắp xếp văn bản trong tệp. Để làm cho công việc của bạn dễ dàng hơn, Linux có một số lệnh chỉnh sửa văn bản như quyến rũawk cho phép bạn làm việc hiệu quả với các tệp văn bản và đầu ra dòng lệnh.

Đăng lại Đăng lại tiếng riu ríu E-mail 10 ví dụ Sed này sẽ khiến bạn trở thành người dùng Linux thành thạo

Bạn muốn trở thành một người dùng thành thạo Linux? Nắm bắt được sed sẽ hữu ích. Học hỏi từ 10 ví dụ sed này.

Đọc tiếp
Chủ đề liên quan
  • Linux
  • Linux
Giới thiệu về tác giả Deepesh Sharma(Đã xuất bản 79 bài báo)

Deepesh là Junior Editor cho Linux tại MUO. Anh ấy viết các hướng dẫn thông tin về Linux, nhằm mục đích cung cấp trải nghiệm thú vị cho tất cả những người mới đến. Không chắc về phim, nhưng nếu bạn muốn nói về công nghệ, anh ấy là người của bạn. Khi rảnh rỗi, bạn có thể bắt gặp anh ấy đọc sách, nghe các thể loại âm nhạc khác nhau hoặc chơi guitar.

Xem thêm từ Deepesh Sharma

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký