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
:
awk
awk '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
awk
Ví 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.if
Bạ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
awk
Mặ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.