Lệnh uniq trong Linux

Giới thiệu

Trong lab này, bạn sẽ học cách sử dụng lệnh uniq trong Linux để loại bỏ các dòng trùng lặp khỏi một file và đếm số lần xuất hiện của các dòng duy nhất. Lệnh uniq là một công cụ mạnh mẽ để xử lý và chỉnh sửa văn bản, cho phép bạn làm sạch và phân tích dữ liệu văn bản một cách hiệu quả. Bạn sẽ bắt đầu bằng cách hiểu mục đích và cú pháp của lệnh uniq, sau đó áp dụng nó vào các ví dụ thực tế, chẳng hạn như loại bỏ các dòng trùng lặp và đếm các dòng duy nhất. Lab này sẽ trang bị cho bạn các kỹ năng để quản lý và thao tác dữ liệu văn bản một cách hiệu quả bằng cách sử dụng lệnh uniq trong môi trường Linux của bạn.

Lab bao gồm các bước sau:

  • Tìm hiểu Mục đích và Cú pháp của Lệnh uniq
  • Loại bỏ các Dòng Trùng lặp khỏi một File
  • Đếm Số lần Xuất hiện của các Dòng Duy nhất

Tìm hiểu Mục đích và Cú pháp của Lệnh uniq

Trong bước này, bạn sẽ tìm hiểu về mục đích và cú pháp của lệnh uniq trong Linux. Lệnh uniq được sử dụng để loại bỏ các dòng trùng lặp khỏi một file hoặc luồng đầu vào.

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

uniq [OPTION]... [INPUT_FILE [OUTPUT_FILE]]

Dưới đây là phân tích các tùy chọn:

  • -c: Thêm tiền tố vào các dòng bằng số lần xuất hiện
  • -d: Chỉ in các dòng trùng lặp
  • -u: Chỉ in các dòng duy nhất
  • -i: Bỏ qua chữ hoa chữ thường khi so sánh các dòng
  • -f N: Bỏ qua N trường đầu tiên trên mỗi dòng
  • -s N: Bỏ qua N ký tự đầu tiên trên mỗi dòng

Hãy bắt đầu bằng cách tạo một file mẫu với một số dòng trùng lặp:

echo -e "apple\norange\napple\nbanana\norange" > sample.txt

Ví dụ đầu ra:

apple
orange
apple
banana
orange

Bây giờ, hãy sử dụng lệnh uniq để loại bỏ các dòng trùng lặp:

uniq sample.txt

Ví dụ đầu ra:

apple
orange
banana

Trong ví dụ này, lệnh uniq đã loại bỏ các dòng trùng lặp "apple" và "orange" khỏi file đầu vào.

Loại bỏ các Dòng Trùng lặp khỏi một File

Trong bước này, bạn sẽ học cách sử dụng lệnh uniq để loại bỏ các dòng trùng lặp khỏi một file.

Đầu tiên, hãy tạo một file mẫu với một số dòng trùng lặp:

echo -e "apple\norange\napple\nbanana\norange\napple" > sample.txt

Ví dụ đầu ra:

apple
orange
apple
banana
orange
apple

Để loại bỏ các dòng trùng lặp, chúng ta có thể sử dụng lệnh uniq:

uniq sample.txt

Ví dụ đầu ra:

apple
orange
banana

Lệnh uniq so sánh các dòng liền kề và loại bỏ mọi bản sao. Tuy nhiên, nó chỉ loại bỏ các bản sao liên tiếp. Nếu các bản sao không nằm cạnh nhau, uniq sẽ không loại bỏ chúng.

Để loại bỏ tất cả các dòng trùng lặp, bất kể vị trí của chúng, chúng ta có thể sử dụng lệnh sort kết hợp với uniq:

sort sample.txt | uniq

Ví dụ đầu ra:

apple
banana
orange

Lệnh sort sắp xếp các dòng theo thứ tự bảng chữ cái, điều này đảm bảo rằng các dòng trùng lặp nằm cạnh nhau. Sau đó, lệnh uniq có thể loại bỏ các bản sao.

Đếm Số lần Xuất hiện của các Dòng Duy nhất

Trong bước này, bạn sẽ học cách sử dụng lệnh uniq để đếm số lần xuất hiện của các dòng duy nhất trong một file.

Hãy bắt đầu bằng cách tạo một file mẫu với một số dòng trùng lặp:

echo -e "apple\norange\napple\nbanana\norange\napple" > sample.txt

Ví dụ đầu ra:

apple
orange
apple
banana
orange
apple

Để đếm số lần xuất hiện của các dòng duy nhất, chúng ta có thể sử dụng tùy chọn -c với lệnh uniq:

uniq -c sample.txt

Ví dụ đầu ra:

   3 apple
   1 banana
   2 orange

Trong đầu ra này, số trước mỗi dòng đại diện cho số lượng xuất hiện của dòng duy nhất đó.

Nếu bạn muốn sắp xếp đầu ra theo số lượng, bạn có thể chuyển đầu ra đến lệnh sort:

uniq -c sample.txt | sort -n

Ví dụ đầu ra:

   1 banana
   2 orange
   3 apple

Tùy chọn -n cho sort sắp xếp đầu ra bằng số, điều này đặt các dòng có số lượng thấp nhất lên đầu.

Tóm tắt

Trong lab này, bạn đã học về mục đích và cú pháp của lệnh uniq trong Linux, được sử dụng để loại bỏ các dòng trùng lặp khỏi một file hoặc luồng đầu vào. Bạn đã khám phá các tùy chọn khác nhau có sẵn với lệnh uniq, chẳng hạn như đếm số lần xuất hiện của các dòng duy nhất, chỉ in các dòng trùng lặp và bỏ qua chữ hoa chữ thường khi so sánh các dòng. Sau đó, bạn đã áp dụng lệnh uniq để loại bỏ các dòng trùng lặp khỏi một file mẫu và học được rằng nó chỉ loại bỏ các bản sao liên tiếp. Để loại bỏ tất cả các dòng trùng lặp, bạn đã kết hợp lệnh sort với uniq để đảm bảo rằng các dòng được sắp xếp theo thứ tự bảng chữ cái trước khi loại bỏ các bản sao.

400+ câu lệnh phổ biến trong Linux