Lệnh awk trong Linux là một công cụ mạnh mẽ được sử dụng để xử lý và phân tích dữ liệu văn bản theo dòng, cột hoặc điều kiện cụ thể. Nó có thể đọc, chỉnh sửa, lọc, và định dạng dữ liệu từ các tệp văn bản hoặc từ các đầu vào khác. awk được tích hợp sẵn trong hầu hết các hệ điều hành dựa trên Unix, bao gồm Linux, và thường được sử dụng trong các tập lệnh shell để tự động hóa các tác vụ xử lý dữ liệu.
Dưới đây là các phần quan trọng khi sử dụng lệnh awk:
awkawk 'pattern {action}' filename
awk sẽ tìm kiếm trong dữ liệu. Nếu điều kiện là đúng, awk sẽ thực hiện action.awk thực hiện khi mẫu phù hợp được tìm thấy. Nó có thể là in dữ liệu, tính toán, hoặc thao tác với các trường.awk sẽ đọc để xử lý dữ liệu.awk '{print}' file.txt
{print}: In ra toàn bộ các dòng trong tệp file.txt.Ví dụ, nếu có tệp data.txt chứa:
John 25 Jane 30 Doe 40
Lệnh awk dưới đây sẽ in ra cột thứ nhất (tên):
awk '{print $1}' data.txt
$1: Đại diện cho cột đầu tiên.$2: Sẽ đại diện cho cột thứ hai, $3 cho cột thứ ba, và cứ thế.Kết quả:
John Jane Doe
Giả sử bạn muốn tìm những dòng có chứa tên “John”:
awk '/John/ {print}' data.txt
awkVí dụ, nếu bạn có một tệp với các số và bạn muốn tính tổng giá trị của cột thứ hai:
awk '{sum += $2} END {print sum}' data.txt
95
Để đếm tổng số dòng trong một tệp:
awk 'END {print NR}' data.txt
NR: Biến tích hợp của awk đại diện cho số dòng hiện tại.ifBạn có thể sử dụng if trong awk để thực hiện các hành động điều kiện. Ví dụ, in ra những người có độ tuổi lớn hơn 30:
awk '{if ($2 > 30) print $1, $2}' data.txt
Doe 40
awkMặc định, awk sử dụng dấu cách hoặc tab làm ký tự phân cách giữa các cột. Tuy nhiên, bạn có thể thay đổi điều này bằng cách chỉ định ký tự phân cách khác với tùy chọn -F.
Ví dụ, xử lý tệp CSV có dấu phẩy làm ký tự phân cách:
awk -F ',' '{print $1, $2}' data.csv
awk 'length($0) > 30' file.txt
length($0): Đo độ dài của dòng hiện tại.awk '{sum += $2; count += 1} END {print sum/count}' data.txt
Lệnh awk rất hữu ích trong các tác vụ xử lý dữ liệu văn bản phức tạp, giúp bạn thực hiện mọi thứ từ in đơn giản đến các phép tính toán học và điều kiện phức tạp. awk đặc biệt mạnh mẽ khi làm việc với các tệp có cấu trúc hoặc khi cần phân tích và xử lý các tệp log, dữ liệu CSV, hay các tệp văn bản khác.