Hệ điều hành Linux nổi tiếng với sự linh hoạt và mạnh mẽ, đặc biệt là trong việc xử lý văn bản và dữ liệu. Dù bạn là một lập trình viên, quản trị viên hệ thống hay một nhà phân tích dữ liệu, việc nắm vững các lệnh Linux cơ bản và nâng cao để thao tác với văn bản sẽ giúp công việc của bạn trở nên hiệu quả và nhanh chóng hơn rất nhiều. Bài viết này sẽ đưa bạn đi sâu vào thế giới của những công cụ dòng lệnh (CLI) quyền năng, từ những lệnh đơn giản nhất đến những lệnh phức tạp hơn, kèm theo các ví dụ thực tiễn dễ hiểu.
Tại Sao Cần Nắm Vững Các Lệnh Xử Lý Văn Bản Trên Linux?
Trong kỷ nguyên dữ liệu lớn, khả năng trích xuất, lọc, sắp xếp và biến đổi thông tin từ các tệp văn bản là một kỹ năng vô cùng giá trị. Linux cung cấp một bộ công cụ phong phú, cho phép bạn:
- Tự động hóa tác vụ: Viết script để xử lý hàng loạt tệp tin.
- Phân tích log: Nhanh chóng tìm kiếm lỗi hoặc thông tin quan trọng từ các tệp log khổng lồ.
- Trích xuất dữ liệu: Lấy ra những phần dữ liệu cụ thể từ các tệp cấu hình, báo cáo.
- Biến đổi dữ liệu: Định dạng lại dữ liệu cho phù hợp với yêu cầu khác nhau.
- Tiết kiệm thời gian: Xử lý công việc mà nếu làm thủ công sẽ mất rất nhiều giờ.
Những Lệnh Linux Xử Lý Văn Bản & Dữ Liệu Cơ Bản
1. `cat` (Concatenate And Print Files) – Hiển Thị Nội Dung Tệp
Lệnh cat là một trong những lệnh cơ bản nhất, dùng để hiển thị nội dung của một hoặc nhiều tệp tin ra màn hình. Nó cũng có thể được dùng để nối các tệp tin lại với nhau.
Cú pháp cơ bản:
cat [tùy chọn] [tên_tệp]...
Ví dụ thực tế:
- Hiển thị nội dung tệp:
cat log.txt - Hiển thị nội dung với số dòng:
cat -n script.sh - Nối hai tệp và lưu vào tệp mới:
cat file1.txt file2.txt > combined.txt
2. `grep` (Global Regular Expression Print) – Tìm Kiếm Mẫu
grep là một công cụ cực kỳ mạnh mẽ để tìm kiếm các dòng chứa một mẫu cụ thể (thường là biểu thức chính quy) trong một hoặc nhiều tệp tin.
Cú pháp cơ bản:
grep [tùy chọn] "mẫu_tìm_kiếm" [tên_tệp]...
Ví dụ thực tế:
- Tìm tất cả các dòng chứa từ “error” trong log.txt:
grep "error" log.txt - Tìm kiếm không phân biệt chữ hoa/thường:
grep -i "warning" access.log - Tìm kiếm và hiển thị số dòng:
grep -n "failed" auth.log - Tìm các dòng KHÔNG chứa từ “success”:
grep -v "success" report.txt - Tìm trong nhiều tệp và hiển thị tên tệp:
grep "root" /etc/*.conf
3. `sed` (Stream EDitor) – Chỉnh Sửa Dòng
sed là một trình chỉnh sửa dòng không tương tác, rất hiệu quả để thực hiện các phép biến đổi văn bản trên một luồng dữ liệu hoặc tệp tin. Nó thường được dùng để tìm và thay thế.
Cú pháp cơ bản:
sed [tùy chọn] 'lệnh_sed' [tên_tệp]...
Ví dụ thực tế:
- Thay thế tất cả các lần xuất hiện của “old” bằng “new” trong mỗi dòng:
sed 's/old/new/g' input.txt(
slà substitute,glà global – thay thế tất cả) - Thay thế chỉ lần xuất hiện đầu tiên của “old” bằng “new” trên mỗi dòng:
sed 's/old/new/' input.txt - Xóa các dòng trống:
sed '/^$/d' input.txt(
^$là biểu thức chính quy cho dòng trống,dlà delete) - Thay thế và lưu trực tiếp vào tệp (in-place):
sed -i 's/http/https/g' config.txt
4. `awk` – Xử Lý Dữ Liệu Theo Cột/Trường
awk là một ngôn ngữ lập trình mạnh mẽ, chuyên dùng để xử lý dữ liệu dựa trên các mẫu và hành động. Nó đặc biệt xuất sắc trong việc thao tác với dữ liệu có cấu trúc theo cột (trường).
Cú pháp cơ bản:
awk 'mẫu { hành động }' [tên_tệp]...
Mặc định, awk sử dụng khoảng trắng làm dấu phân cách trường.
Ví dụ thực tế:
- In cột thứ nhất và cột thứ ba của một tệp:
awk '{print $1, $3}' data.txt(
$1là cột đầu tiên,$3là cột thứ ba) - Tính tổng cột thứ hai:
awk '{sum += $2} END {print sum}' numbers.txt - Lọc các dòng có giá trị cột thứ hai lớn hơn 10:
awk '$2 > 10 {print $0}' sales.csv(
$0in ra toàn bộ dòng) - Sử dụng dấu phân cách tùy chỉnh (ví dụ: dấu phẩy cho CSV):
awk -F',' '{print $1, $3}' employees.csv(
-F','chỉ định dấu phẩy là dấu phân cách)
5. `sort` – Sắp Xếp Dữ Liệu
Lệnh sort dùng để sắp xếp các dòng của một tệp văn bản theo thứ tự bảng chữ cái, số hoặc tùy chỉnh.
Cú pháp cơ bản:
sort [tùy chọn] [tên_tệp]...
Ví dụ thực tế:
- Sắp xếp mặc định (bảng chữ cái, tăng dần):
sort names.txt - Sắp xếp ngược (giảm dần):
sort -r numbers.txt - Sắp xếp theo giá trị số:
sort -n scores.txt - Sắp xếp duy nhất (loại bỏ trùng lặp sau khi sắp xếp):
sort -u list.txt - Sắp xếp theo cột thứ hai (ví dụ: dấu phân cách là tab):
sort -k2 -t$'t' data.tsv
6. `uniq` – Loại Bỏ Dòng Trùng Lặp
Lệnh uniq dùng để lọc bỏ các dòng trùng lặp liên tiếp trong một tệp. Để loại bỏ tất cả các dòng trùng lặp (không cần liên tiếp), bạn thường phải dùng sort trước.
Cú pháp cơ bản:
uniq [tùy chọn] [tên_tệp_đầu_vào] [tên_tệp_đầu_ra]
Ví dụ thực tế:
- Loại bỏ các dòng trùng lặp liên tiếp:
cat sorted_list.txt | uniq - Đếm số lần xuất hiện của mỗi dòng duy nhất:
sort fruits.txt | uniq -c - Chỉ hiển thị các dòng trùng lặp:
sort words.txt | uniq -d - Để loại bỏ tất cả các dòng trùng lặp (không cần liên tiếp):
sort unsorted_list.txt | uniq
7. `cut` – Trích Xuất Cột/Trường
cut là một công cụ đơn giản nhưng hữu ích để trích xuất các phần (cột hoặc trường) từ mỗi dòng của một tệp văn bản.
Cú pháp cơ bản:
cut [tùy chọn] [tên_tệp]...
Ví dụ thực tế:
- Trích xuất các ký tự từ vị trí 1 đến 5:
cut -c 1-5 data.txt - Trích xuất cột thứ nhất và thứ ba (mặc định dấu phân cách là tab):
cut -f 1,3 data.tsv - Trích xuất cột thứ hai với dấu phân cách là dấu phẩy:
cut -d',' -f 2 records.csv - Trích xuất từ cột thứ ba đến cuối:
cut -d':' -f 3- /etc/passwd
Kết Hợp Các Lệnh – Sức Mạnh Thực Sự Của Linux Pipe
Sức mạnh thực sự của các lệnh xử lý văn bản và dữ liệu trên Linux nằm ở khả năng kết hợp chúng bằng toán tử “pipe” (|). Pipe cho phép bạn chuyển đầu ra của một lệnh làm đầu vào cho lệnh khác, tạo thành các chuỗi xử lý dữ liệu phức tạp.
Ví dụ kết hợp:
- Tìm các tệp log có lỗi, sắp xếp chúng và chỉ hiển thị các dòng duy nhất:
grep "error" /var/log/*.log | sort | uniq - Đếm số lượng địa chỉ IP duy nhất kết nối đến máy chủ từ tệp access.log:
awk '{print $1}' access.log | sort | uniq -c | sort -nr(
$1là địa chỉ IP,sort -nrsắp xếp số đếm giảm dần) - Lọc ra các user có UID lớn hơn 1000 từ /etc/passwd và chỉ hiển thị tên user:
awk -F':' '$3 > 1000 {print $1}' /etc/passwd
Lời Kết
Việc làm chủ các lệnh Linux xử lý văn bản và dữ liệu không chỉ giúp bạn thao tác hiệu quả hơn với hệ thống mà còn mở ra cánh cửa đến thế giới của tự động hóa và phân tích dữ liệu trên môi trường dòng lệnh. Từ việc hiển thị nội dung với cat, tìm kiếm với grep, chỉnh sửa với sed, phân tích với awk, đến sắp xếp và lọc với sort và uniq, mỗi lệnh đều có vai trò riêng và trở nên mạnh mẽ hơn khi được kết hợp.
Hãy bắt đầu thực hành ngay hôm nay! Tạo các tệp văn bản mẫu, thử nghiệm với các tùy chọn khác nhau và kết hợp các lệnh theo những cách sáng tạo. Bạn sẽ ngạc nhiên về những gì mình có thể đạt được chỉ với vài dòng lệnh đơn giản. Chúc bạn thành công trên hành trình làm chủ Linux!






