Awk là một công cụ mạnh mẽ trong Linux được sử dụng để xử lý và định dạng văn bản. Awk có thể thực hiện các tác vụ như tìm kiếm, lọc, định dạng và tính toán trên dữ liệu văn bản.

Cú pháp chung của awk là:
awk options 'pattern {actions}' fileTrong đó, options là các tùy chọn của awk, pattern là biểu thức để lọc các dòng phù hợp, actions là các hành động sẽ được thực hiện trên các dòng phù hợp và file là file sẽ được xử lý.
Dưới đây là một số ví dụ về cách sử dụng awk:
- Lọc các dòng chứa từ cụ thể trong file:
awk '/apple/' file.txtTrong đó, apple là từ cần tìm kiếm và file.txt là file cần lọc.
- Lọc các dòng có độ dài bằng 4 ký tự:
awk 'length == 4' file.txtTrong đó, length là hàm trả về độ dài của dòng và file.txt là file cần lọc.
- Hiển thị nội dung của cột cụ thể:
awk '{print $2}' file.txtTrong đó, $2 là chỉ số của cột và file.txt là file cần lọc.
- Tính tổng của một cột:
awk '{sum += $1} END {print sum}' file.txtTrong đó, sum là biến lưu trữ tổng và END là vị trí cuối cùng của awk.
- Định dạng các dòng:
awk '{printf "%-8s %-8s %-8s\n", $1, $2, $3}' file.txtTrong đó, %8s là độ rộng của cột và file.txt là file cần lọc.
Một số mẹo khi sử dụng awk:
- Sử dụng
-Fđể xác định ký tự phân tách giữa các cột. - Sử dụng biến để lưu trữ giá trị để tái sử dụng trong các hành động tiếp theo.
- Sử dụng hàm
substrđể lấy một chuỗi con từ một chuỗi đã cho. - Sử dụng hàm
tolowerđể đổi các ký tự thành ký tự thường.
Dưới đây là một số tip khi sử dụng awk trong Linux:
- Sử dụng biến trong awk:
- Sử dụng biến trong awk bắt đầu bằng dấu ‘$’ và tên biến nằm trong dấu ngoặc kép.
- Ví dụ:
awk '{if($1 >= 100) print $1}' file.txtTrong đó, lệnh sẽ hiển thị các giá trị cột đầu tiên lớn hơn hoặc bằng 100 trong file.txt.
- Sử dụng lệnh tích hợp (built-in function) của awk:
- Awk cung cấp một số lệnh tích hợp để xử lý dữ liệu, bao gồm ‘length’, ‘substr’, ‘index’, ‘split’ và ‘sprintf’.
- Ví dụ:
awk '{print length($0)}' file.txtLệnh trên sẽ hiển thị độ dài của mỗi dòng trong file.txt.
- Sử dụng awk với các tập tin CSV:
- Awk cũng có thể sử dụng để xử lý tập tin CSV (comma-separated values).
- Ví dụ:
awk -F"," '{print $1 "," $3}' file.csvTrong đó, tùy chọn ‘-F”,”‘ sẽ chỉ định dấu phẩy ‘,’ làm phân tách giữa các trường, và lệnh sẽ hiển thị các giá trị của cột thứ nhất và thứ ba trong file.csv, được ngăn cách bằng dấu phẩy.
5. Lấy ra các hàng (dòng) duy nhất của một file văn bản (không lặp lại):
awk '!seen[$0]++' file.txt6. In ra các hàng có giá trị của một cột nằm trong một phạm vi giá trị cụ thể:
awk '$2 >= 50 && $2 <= 100' file.txt7. Tính tổng giá trị của một cột:
awk '{ sum += $1 } END { print sum }' file.txt8. Thay thế một chuỗi trong toàn bộ file văn bản:
awk '{gsub(/old_string/, "new_string"); print}' file.txt9. Đếm số lượng hàng của file văn bản:
awk 'END { print NR }' file.txt