Tổng kết Linux trung cấp — Xử lý văn bản và shell script
Bài viết này là một phần của Khóa học Linux, giúp bạn thành thạo từ đầu những kỹ năng Linux thực tiễn, từ các lệnh cơ bản đến lập trình shell script.
Sắp xếp trên một trang: biểu thức chính quy của grep, sed, awk, sort uniq cut wc tr tee, tar ln diff, du df date, cùng cú pháp shell cho biến, tham số, điều kiện, vòng lặp, hàm, đầu vào, kết hợp lệnh và đầu ra — bằng sơ đồ phân loại và bảng tra nhanh theo từng mảng.
Toàn cảnh những gì bạn đã học ở Linux trung cấp
Trang này không phải bài thực hành chạy trên trình duyệt; mục đích của nó là tổng ôn phần trung cấp (xử lý văn bản I1–I10 và shell script S1–S10). Nó sắp xếp trên một trang cả phần xử lý văn bản — tìm kiếm và thay thế, tổng hợp cột, định dạng, đóng gói, so sánh khác biệt, thông tin hệ thống — lẫn phần shell script, từ biến cho tới hàm, đọc đầu vào, kết hợp lệnh và xuất báo cáo. Tất cả được trình bày bằng sơ đồ và bảng tra nhanh theo từng mảng. Từ bảng tra nhanh bạn quay lại được từng bài, nên bạn ôn lại được bất cứ lúc nào.
Tra nhanh xử lý văn bản — biểu thức chính quy / sed / awk
Đây là nhóm cốt lõi để tìm kiếm, thay thế, trích xuất và tổng hợp chuỗi. Bạn thu hẹp dòng bằng biểu thức chính quy của grep, thay thế và thao tác dòng bằng sed, rồi lấy cột ra và tổng hợp bằng awk. Nắm được ý nghĩa của các ký hiệu thì xử lý log và CSV nhẹ đi hẳn.
| Cú pháp | Ý nghĩa |
|---|---|
^ / $ | Khớp đầu dòng và cuối dòng |
. / * | Một ký tự bất kỳ / lặp 0 lần trở lên của ký tự ngay trước |
[abc] / [a-z] | Lớp ký tự (một ký tự bất kỳ trong đó, hoặc một khoảng) |
grep -E | Biểu thức chính quy mở rộng (dùng được + | ()) |
grep -o | Chỉ lấy ra phần khớp |
| Cú pháp | Ý nghĩa |
|---|---|
sed 's/old/new/' | Thay old đầu tiên trên mỗi dòng thành new |
sed 's/old/new/g' | Thay mọi old trên dòng |
sed -n 'Np' | Chỉ trích xuất dòng thứ N |
sed '/pat/d' | Xóa các dòng có chứa pat |
sed -i | Ghi đè trực tiếp vào tệp |
| Cú pháp | Ý nghĩa |
|---|---|
awk '{print $1}' | Lấy ra cột 1 ($NF là cột cuối) |
awk -F',' | Đổi ký tự phân cách |
NR / NF | Số hiệu dòng / số cột của dòng đó |
/pat/{ … } | Chỉ áp dụng xử lý cho các dòng khớp |
BEGIN{} … END{} | Khởi tạo trước khi xử lý và tổng hợp sau khi xử lý |
Tra nhanh công cụ định dạng và nhóm lệnh về tệp
Đây là các công cụ định dạng dùng để sắp xếp, loại trùng, trích cột, đếm dòng, chuyển đổi ký tự và rẽ đầu ra, cùng các lệnh về tệp cho đóng gói, liên kết, so sánh khác biệt và thông tin hệ thống. Bạn nối chúng bằng pipe để chuẩn bị dữ liệu trước khi tổng hợp hay làm báo cáo.
| Cú pháp | Ý nghĩa |
|---|---|
sort / sort -n | Sắp xếp (-n là theo thứ tự số) |
uniq / uniq -c | Bỏ các dòng trùng liên tiếp (-c kèm số đếm) |
cut -d',' -f1 | Chỉ định dấu phân cách rồi trích cột ra |
wc -l / wc -w | Đếm số dòng và số từ |
tr a-z A-Z / tr -d / tr -s | Chuyển đổi, xóa và nén ký tự lặp liên tiếp |
tee file | Đưa đầu ra ra cả màn hình lẫn tệp |
| Cú pháp | Ý nghĩa |
|---|---|
tar -cf a.tar dir | Gom một thư mục vào một tệp (không nén) |
tar -tf a.tar | Liệt kê nội dung của gói lưu trữ |
tar -xf a.tar / -C dir | Giải nén (-C chỉ định nơi giải nén) |
ln -s target name | Tạo liên kết mềm (dấu -> trong ls -l) |
ln a b | Tạo liên kết cứng |
diff a b / diff -u | Hiển thị khác biệt (-u là định dạng unified) |
du -sh / df -h | Hiển thị dung lượng đã dùng và còn trống ở dạng dễ đọc |
date +%Y-%m-%d / uname -a | Định dạng ngày giờ và hiển thị thông tin kernel |
Tra nhanh cú pháp shell script
Đây là cú pháp từ biến, tham số, điều kiện, vòng lặp, hàm cho tới đọc đầu vào, kết hợp lệnh và đầu ra. Bắt đầu bằng #!/bin/sh, thêm quyền thực thi bằng chmod +x, rồi chạy bằng ./file. Console của khóa học này là ash, nên bạn dùng [ ] với if ([[ ]] là phần mở rộng của bash).
| Cú pháp | Ý nghĩa |
|---|---|
#!/bin/sh / chmod +x f / ./f | Shebang, thêm quyền thực thi, chạy |
v=x / "$v" | Gán và tham chiếu biến (bọc nháy cho an toàn) |
$1 / $@ / $# | Tham số thứ nhất / tất cả tham số / số lượng tham số |
${1:-def} | Giá trị mặc định khi không có tham số |
$(...) / $(( )) | Thay thế lệnh / mở rộng biểu thức số học |
[ -f f ] / if … fi / case | Kiểm tra tệp và rẽ nhánh điều kiện |
for … do … done / while | Xử lý lặp lại |
name() { … } / local | Định nghĩa hàm và biến cục bộ |
while read line; do … done < f | Đọc một tệp từng dòng một |
printf '%s\t%s\n' a b | Đầu ra có định dạng (ghi rõ tab và xuống dòng) |
> f / >> f / 2> err | Ghi đè, nối thêm, và tách lỗi chuẩn ra |
<<EOF … EOF / $? | here-doc / mã thoát của lệnh ngay trước |
Chúc mừng bạn đã hoàn thành phần trung cấp!
Đến đây bạn đã có đủ: tìm kiếm bằng biểu thức chính quy, thay thế và tổng hợp bằng sed / awk, định dạng bằng sort / uniq / cut / wc / tr / tee, thao tác tệp với tar / ln / diff và các lệnh thông tin hệ thống. Về phía script, bạn có biến, tham số, điều kiện, vòng lặp, hàm, đọc đầu vào, kết hợp lệnh cho tới xuất báo cáo. Ghép chúng lại thì bạn xử lý được gần như mọi công việc thực tế, từ tổng hợp log đến tự động hóa các thao tác lặp đi lặp lại.
Hãy để bảng tra nhanh này trong tầm tay, và khi quên cách viết thì quay lại từng bài rồi tự tay gõ để kiểm chứng. Tiếp theo, hãy ghép các thành phần đã học lại và bắt đầu từ một script tự động hóa nhỏ vừa với công việc của chính bạn.