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.

Sơ đồ phân loại các lệnh trung cấp
biểu thức chính quygrep / -E / -othay thế, trích xuấtsed s/// -n pcột, tổng hợpawk $1 BEGIN ENDđịnh dạngsort uniq cut wcchuyển đổi, rẽtr tee xargstệptar ln diffthông tindu df date unameshell cơ bản#!/bin/sh chmod +xđiều khiển, kết hợpif for fn $(...)xử lý văn bảnđịnh dạng và tệphệ thống và script
Sắp xếp thành 9 mảng: xử lý văn bản (biểu thức chính quy, sed, awk, định dạng), nhóm lệnh về tệp, thông tin hệ thống, và shell script.
Bảng tra nhanh cấu trúc của shell script
shebang#!/bin/shbiếnv=x "$v"tham số$1 $@ ${1:-d}điều kiện[ -f ] if casevòng lặpfor whilehàmname(){} localđầu vàowhile read < fkết hợp$(grep|awk)đầu ra>> here-doc $?khai báo và tham sốcấu trúc điều khiểnđầu vào và đầu ra
Từ shebang cho tới 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 — đó là các thành phần cấu tạo nên một script.

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 -EBiểu thức chính quy mở rộng (dùng được + | ())
grep -oChỉ 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 -iGhi đè 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 / NFSố 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 -nSắp xếp (-n là theo thứ tự số)
uniq / uniq -cBỏ các dòng trùng liên tiếp (-c kèm số đếm)
cut -d',' -f1Chỉ đị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 -sChuyể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 dirGom một thư mục vào một tệp (không nén)
tar -tf a.tarLiệt kê nội dung của gói lưu trữ
tar -xf a.tar / -C dirGiải nén (-C chỉ định nơi giải nén)
ln -s target nameTạo liên kết mềm (dấu -> trong ls -l)
ln a bTạo liên kết cứng
diff a b / diff -uHiển thị khác biệt (-u là định dạng unified)
du -sh / df -hHiể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 / ./fShebang, 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 / caseKiểm tra tệp và rẽ nhánh điều kiện
for … do … done / whileXử 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> errGhi đè, 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.