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.