Lệnh awk trong linux với các ví dụ dễ hiểu

Lệnh awk trong linux là một công cụ mạnh mẽ để xử lý văn bản theo dòng, giúp bạn trích xuất và định dạng dữ liệu dễ dàng. Nó hoạt động bằng cách đọc từng dòng, so sánh với mẫu cho trước và thực hiện hành động tương ứng. Với lệnh awk trong linux, bạn có thể lọc, biến đổi và in dữ liệu từ các tệp văn bản một cách linh hoạt.

Lệnh awk trong linux là gì?

Trong Linux, command awk in linux là một công cụ dòng lệnh mạnh mẽ để xử lý và trích xuất dữ liệu từ các tệp văn bản. Nó hoạt động bằng cách đọc từng dòng của tệp, so sánh với các mẫu được chỉ định và thực hiện các hành động tương ứng. Awk đặc biệt hữu ích cho việc lọc, định dạng và báo cáo dữ liệu từ các tệp nhật ký hoặc các tệp dữ liệu có cấu trúc. Với cú pháp linh hoạt, awk cho phép bạn thực hiện các phép toán, so sánh và thao tác chuỗi một cách dễ dàng. Nó là một công cụ không thể thiếu cho các quản trị viên hệ thống và những người làm việc với dữ liệu văn bản.

Tìm hiểu các kiến thức cơ bản về lệnh awk

Trong bước này, bạn sẽ học các kiến thức cơ bản về lệnh awk trong Linux.

Lệnh awk là một công cụ xử lý văn bản mạnh mẽ, hữu ích cho nhiều tác vụ khác nhau.

Bạn có thể dùng awk để trích xuất, thao tác và phân tích dữ liệu một cách hiệu quả.

Đầu tiên, hãy cùng tìm hiểu cú pháp cơ bản của lệnh awk:

awk 'pattern {action}' file

pattern là điều kiện để awk chọn các dòng từ file đầu vào phù hợp.

action là tập hợp các lệnh mà awk sẽ thực hiện trên các dòng đã chọn.

Ví dụ, hãy tạo một file tên data.txt với nội dung như sau:

John,25,Sales
Jane,30,Marketing
Bob,35,IT

Bây giờ, hãy dùng awk để in ra trường thứ hai (tuổi) của mỗi dòng:

awk -F',' '{print $2}' data.txt

Kết quả ví dụ:

25
30
35

Trong ví dụ này, tùy chọn -F',' báo cho awk biết dấu phẩy , là dấu phân cách trường.

Hành động {print $2} yêu cầu awk in ra trường thứ hai của mỗi dòng.

Bạn cũng có thể dùng awk để thực hiện các thao tác phức tạp hơn, như lọc và chuyển đổi dữ liệu.

Ví dụ, hãy in ra tên và phòng ban của những người lớn hơn 30 tuổi:

awk -F',' '$2 > 30 {print $1, $3}' data.txt

Kết quả ví dụ:

Jane Marketing
Bob IT

Trong ví dụ này, $2 > 30 chọn các dòng mà trường thứ hai (tuổi) lớn hơn 30.

Hành động {print $1, $3} in ra trường thứ nhất và thứ ba (tên và phòng ban).

Thực hiện Xử lý Văn bản với awk

Trong bước này, bạn sẽ học cách sử dụng awk để thực hiện các tác vụ xử lý văn bản nâng cao hơn.

Chúng ta hãy bắt đầu bằng cách tạo một file có tên log.txt với nội dung như sau:

2023-04-01 10:30:00 INFO: This is a log message.
2023-04-02 11:45:00 ERROR: An error occurred.
2023-04-03 14:20:00 INFO: Another log message.
2023-04-04 16:10:00 WARN: A warning message.

Bây giờ, hãy sử dụng awk để trích xuất ngày, giờ và log level từ mỗi dòng:

awk -F'[ :]' '{print $1, $2, $3, $4, $5, $6}' log.txt

Ví dụ về output:

2023-04-01 10 30 00 INFO This
2023-04-02 11 45 00 ERROR An
2023-04-03 14 20 00 INFO Another
2023-04-04 16 10 00 WARN A

Trong ví dụ này, option -F'[ :]' báo cho awk sử dụng dấu cách và dấu hai chấm làm field separators. Action {print $1, $2, $3, $4, $5, $6} in ra sáu field đầu tiên của mỗi dòng, tương ứng với ngày, giờ và log level.

Bạn cũng có thể sử dụng awk để lọc và biến đổi dữ liệu một cách dễ dàng. Ví dụ, hãy in ra chỉ các dòng có log level là "ERROR":

awk -F'[ :]' '$5 == "ERROR" {print $1, $2, $3, $4, $5, $6}' log.txt

Ví dụ về output:

2023-04-02 11 45 00 ERROR An

Trong ví dụ này, pattern $5 == "ERROR" chọn các dòng mà field thứ năm (log level) là "ERROR", và action {print $1, $2, $3, $4, $5, $6} in ra các field đã chọn.

Sử dụng awk để Xử lý và Phân tích Dữ liệu

Trong bước này, bạn sẽ học cách sử dụng awk cho các tác vụ xử lý và phân tích dữ liệu.

Hãy tạo một file có tên sales.csv với dữ liệu như sau:

Product,Quantity,Price
Laptop,10,999.99
Desktop,15,799.99
Tablet,20,499.99
Smartphone,25,299.99

Bây giờ, hãy sử dụng awk để tính tổng doanh thu cho mỗi sản phẩm:

awk -F',' 'NR > 1 {total = $2 * $3; print $1, "Total Revenue:", total}' sales.csv

Ví dụ về đầu ra:

Laptop Total Revenue: 9999.9
Desktop Total Revenue: 11999.85
Tablet Total Revenue: 9999.8
Smartphone Total Revenue: 7499.75

Trong ví dụ này, mẫu NR > 1 bỏ qua dòng tiêu đề, còn hành động {total = $2 * $3; print $1, "Total Revenue:", total} tính tổng doanh thu và in ra.

Bạn cũng có thể dùng awk để thực hiện các tác vụ phân tích dữ liệu phức tạp hơn.

Ví dụ, hãy tính giá trung bình của tất cả các sản phẩm:

awk -F',' 'NR > 1 {total += $3; count++} END {print "Average Price:", total/count}' sales.csv

Ví dụ về đầu ra:

Average Price: 649.995

Trong ví dụ này, hành động NR > 1 {total += $3; count++} tích lũy tổng giá và đếm số lượng sản phẩm.

Hành động END {print "Average Price:", total/count} tính toán và in ra giá trung bình.

Kết luận cho linux awk command

Vậy là chúng ta đã cùng nhau khám phá những điều thú vị về awk trong Linux! Hy vọng qua bài viết này, bạn đã có cái nhìn tổng quan và hiểu rõ hơn về sức mạnh của công cụ này. Linux awk command thực sự là một "con dao Thụy Sĩ" đa năng, giúp bạn xử lý văn bản một cách nhanh chóng và hiệu quả. Đừng ngần ngại thử nghiệm và áp dụng awk vào công việc hàng ngày của bạn, bạn sẽ bất ngờ với những gì nó có thể làm được. Hãy nhớ rằng, thực hành là chìa khóa để thành thạo bất kỳ công cụ nào, và awk cũng không ngoại lệ. Chúc bạn thành công trên con đường chinh phục linux awk command và khám phá thêm nhiều điều thú vị khác trong thế giới Linux rộng lớn! Hãy tiếp tục học hỏi và chia sẻ kiến thức để cùng nhau phát triển nhé.

Last Updated : 14/10/2025