Liên hệProfile
Danh mục

Mục Lục

    Tìm hiểu về gawk Linux: Công cụ xử lý văn bản và dữ liệu chuyên sâu

    Nguyễn Hưng

    Ngày đăng:

    08/01/2026

    Cập nhật lần cuối:

    08/01/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    08/01/2026

    Cập nhật lần cuối:

    08/01/2026

    Mục lục

    gawk trong Linux là một trình thông dịch dòng lệnh thuộc hệ sinh thái AWK, được GNU triển khai, dùng để xử lý, phân tích và định dạng dữ liệu văn bản, đặc biệt là dạng dữ liệu cột. Với khả năng phân tích, trích xuất và định dạng dữ liệu có cấu trúc một cách linh hoạt, gawk cho phép các quản trị viên hệ thống và nhà phát triển giải quyết các bài toán phức tạp chỉ bằng dòng lệnh ngắn gọn. Trong bài viết dưới đây, mình sẽ cùng bạn tìm hiểu chi tiết về lệnh gawk, từ định nghĩa, cú pháp cho đến các ví dụ ứng dụng thực tế của lệnh này.

    Những điểm chính

    • Định nghĩa lệnh gawk Linux: Hiểu rõ định nghĩa, vai trò và cú pháp cơ bản của gawk trong việc xử lý và định dạng dữ liệu văn bản.
    • Cơ chế hoạt động: Nắm được quy trình xử lý dữ liệu theo từng dòng của gawk (record, pattern, action) để áp dụng lệnh một cách chính xác.
    • Các biến tích hợp: Biết cách sử dụng các biến quan trọng như NR, NF, FS để thực hiện các tác vụ đếm và phân tích nâng cao.
    • Mối liên hệ giữa awk, nawk và gawk: Hiểu rõ mối quan hệ giữa các phiên bản để tự tin sử dụng lệnh trên các hệ thống Linux khác nhau.
    • Ví dụ sử dụng thực tế: Nắm vững cách áp dụng gawk vào các tình huống thực tế như in cột, lọc dữ liệu và thay đổi ký tự phân tách.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các câu hỏi thường gặp, giúp bạn giải quyết các vấn đề thực tế và hiểu sâu hơn về điểm mạnh của gawk.

    Định nghĩa

    gawk Linux là phiên bản nâng cao của lệnh awk – một công cụ dòng lệnh mạnh mẽ trong Linux/Unix dùng để xử lý và phân tích văn bản, đặc biệt là dữ liệu có định dạng cột (như file CSV, log,…). Tiện ích này cho phép quản trị viên hệ thống và lập trình viên thực hiện các thao tác như trích xuất, lọc, tính toán và trình bày dữ liệu một cách linh hoạt chỉ bằng vài dòng lệnh, tiết kiệm thời gian so với các ngôn ngữ lập trình truyền thống.

    gawk Linux là phiên bản nâng cao của lệnh awk
    gawk Linux là phiên bản nâng cao của lệnh awk

    Cú pháp sử dụng lệnhk gawk như sau:

    gawk 'pattern { action }' filename

    Trong đó:

    • pattern: Là điều kiện tìm kiếm hoặc kiểm tra trên từng dòng dữ liệu lấy từ filename.
    • { action }: Là tập hợp các câu lệnh sẽ được thực thi với dòng tìm thấy thỏa pattern.
    • filename: Là đường dẫn đến file văn bản mà gawk sẽ đọc và xử lý tuần tự từng dòng.

    Nguồn gốc ra đời

    AWK là một ngôn ngữ lập trình kịch bản định hướng dữ liệu, xuất hiện lần đầu tiên vào năm 1977 tại phòng thí nghiệm AT&T Bell với mục tiêu chuyên biệt cho việc tìm kiếm mẫu và thao tác trên dữ liệu văn bản. Trên nền tảng đó, gawk ra đời dưới dạng bản triển khai của dự án GNU dành cho ngôn ngữ AWK.

    Đến thời điểm hiện nay, gawk đã trở thành tiện ích dòng lệnh mặc định, phổ biến trên phần lớn các bản phân phối Linux hiện đại, giúp người dùng dễ dàng xử lý, phân tích dữ liệu văn bản một cách hiệu quả và linh hoạt.

    Vai trò

    Vai trò cốt lõi của gawk là xử lý và định dạng dữ liệu trong các file văn bản, đặc biệt là các dữ liệu được tổ chức theo cột, cho phép người dùng dễ dàng trích xuất hoặc thao tác dữ liệu, tạo báo cáo, so khớp mẫu, và thực hiện các phép tính phức tạp. Cụ thể, lệnh gawk thường được sử dụng để xử lý các tác vụ như:

    • Tự động thay đổi định dạng văn bản.
    • Tách cột, xử lý dòng trong file.
    • Lọc dữ liệu theo điều kiện.
    • Tính toán (cộng cột, trung bình,…).
    • Tự động xử lý log, báo cáo, CSV.
    Các tác vụ lệnh gawk thường xử lý
    Các tác vụ lệnh gawk thường xử lý

    Điểm mạnh của gawk nằm ở khả năng hoàn thành các tác vụ phức tạp chỉ với một dòng mã ngắn gọn, tối ưu hơn hẳn so với các ngôn ngữ lập trình truyền thống như C hoặc Python. Hơn nữa, AWK cho phép sử dụng biến, các hàm tích hợp sẵn, và toán tử logic mà không yêu cầu quá trình biên dịch, mang lại sự linh hoạt và tốc độ trong quá trình phát triển kịch bản.

    Cơ chế hoạt động của gawk

    Cơ chế hoạt động của gawk tuân theo một quy trình tuần tự và lặp đi lặp lại:

    1. Gawk đọc dữ liệu đầu vào, có thể từ đầu vào tiêu chuẩn (STDIN) hoặc từ một hay nhiều file được chỉ định.
    2. Lệnh này tiến hành xử lý dữ liệu theo từng dòng, hay còn được gọi là bản ghi (record).
    3. Đối với mỗi bản ghi, gawk sẽ kiểm tra xem có khớp với mẫu (pattern) đã được định nghĩa hay không.
    4. Nếu bản ghi khớp với mẫu, hành động (action) tương ứng trong dấu ngoặc nhọn {} sẽ được thực thi trên bản ghi đó.
    5. Trong trường hợp mẫu bị bỏ qua, awk sẽ mặc định thực hiện hành động trên tất cả các bản ghi đã đọc được.
    Cơ chế hoạt động của gawk
    Cơ chế hoạt động của gawk

    Các biến tích hợp trong gawk

    • NR: Đếm số dòng đầu vào đã xử lý (tính từ đầu đến hiện tại).
    • NF: Đếm số trường trong dòng hiện tại.
    • FS: Lưu ký tự phân các trường đầu vào.
    • RS: Lưu ký tự phân cách giữa các bản ghi.
    • OFS: Lưu ký tự phân cách giữa các trường khi truy xuất ra.
    • ORS: Lưu ký tự phân cách giữa các bản ghi khi xuất ra.

    Ví dụ với NR:

    gawk '{ print NR "-" $1 }' test.txt

    Kết quả sau khi chạy như sau:

    Ví dụ với NR
    Ví dụ với NR

    Tìm kiếm văn bản:

    gawk '/Vietnix/' test.txt

    Kết quả trả ra được hiển thị như sau:

    Kết quả tìm kiếm văn bản
    Kết quả tìm kiếm văn bản

    Mối liên hệ giữa awk, nawk và gawk

    Trên hầu hết các hệ thống Linux hiện nay, khi người dùng gõ lệnh awk hay nawk, thực chất họ đang gọi đến trình thông dịch gawk. Hai tên gọi này thường chỉ là các liên kết tượng trưng (symlinks) trỏ tới file thực thi của gawk. Phiên bản gawk không chỉ tuân thủ các tiêu chuẩn mới nhất của Bell Laboratories awk mà còn cung cấp nhiều tiện ích mở rộng độc quyền của GNU, làm cho gawk trở thành phiên bản mạnh mẽ và đầy đủ tính năng nhất hiện nay.

    In ra tất cả nội dung trong file test.txt

    gawk '{print}' test.txt

    Kết quả trả ra như sau:

    In ra tất cả nội dung trong file test.txt
    In ra tất cả nội dung trong file test.txt

    In ra cột đầu tiên được phân cách bằng dấu cách

    gawk '{print $1}' test.txt

    Kết quả hiển thị như sau:

    In ra cột đầu tiên được phân cách bằng dấu cách
    In ra cột đầu tiên được phân cách bằng dấu cách

    Chỉ định dấu phân cách trường bằng tùy chọn -F

    gawk -F: '{ print $1 }' /etc/passwd

    Kết quả hiển thị như sau:

    Chỉ định dấu phân cách trường bằng tùy chọn -F
    Chỉ định dấu phân cách trường bằng tùy chọn -F

    Câu hỏi thường gặp

    gawk xử lý nhiều file đầu vào như thế nào?

    gawk đọc lần lượt từng file và áp dụng cùng mã lệnh cho từng dòng, thuận tiện cho phân tích dữ liệu từ nhiều nguồn.

    Điểm mạnh của gawk so với Python, C trong xử lý văn bản là gì?

    gawk có cú pháp ngắn, chạy trực tiếp dòng lệnh, phù hợp xử lý nhanh mà không cần biên dịch hay viết script dài dòng.

    Cách đổi ký tự phân tách trường trong gawk?

    Bạn có thể dùng tùy chọn -F, ví dụ: gawk -F, ‘{print $2}’ file.csv.

    gawk dùng NR, NF để thống kê gì mà grep, sed không làm được?

    gawk dùng NR, NF để đếm số dòng, số cột từng dòng, tổng số trường, phân loại dữ liệu theo trường – đây là những thống kê grep/sed khó thực hiện.

    Gawk là một công cụ cực kỳ mạnh mẽ và linh hoạt, đóng vai trò quan trọng trong việc xử lý dữ liệu trên các hệ thống Linux, đặc biệt là với các dữ liệu được sắp xếp theo cột. Khả năng kết hợp giữa so khớp mẫu, thao tác trên từng trường và thực hiện tính toán ngay trên dòng lệnh giúp gawk trở thành một giải pháp hiệu quả để nhanh chóng trích xuất thông tin, tạo báo cáo, hoặc tự động hóa các hoạt động xử lý văn bản phức tạp. Việc thành thạo gawk Linux sẽ trang bị cho bạn một kỹ năng hữu ích, giúp tiết kiệm thời gian và công sức trong các tác vụ quản trị hệ thống hàng ngày.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Các lệnh Docker cơ bản thông dụng và hữu ích dành cho người mới
    Các lệnh Docker cơ bản thông dụng và hữu ích dành cho người mới

    Việc làm chủ các lệnh Docker cơ bản là yêu cầu tiên quyết giúp mình đóng gói và triển khai ứng dụng một cách nhất quán trên mọi môi trường từ Staging đến production. Thay vì liệt kê danh sách lệnh khô khan, bài viết này đúc kết từ quá trình tôi trực tiếp vận…

    07/05/2026

    Git Linux là gì? Hướng dẫn sử dụng Git trên Linux
    Git Linux là gì? Hướng dẫn sử dụng Git trên Linux

    Làm chủ Git trên Linux không chỉ dừng lại ở việc ghi nhớ câu lệnh, mà là cách bạn tối ưu hóa luồng công việc để loại bỏ hoàn toàn các sai sót thủ công khi cập nhật dữ liệu. Những chia sẻ trong bài viết được đúc kết từ quá trình mình trực tiếp…

    07/05/2026

    Emacs là gì? Hướng dẫn sử dụng Emacs Terminal trên Linux
    Emacs là gì? Hướng dẫn sử dụng Emacs Terminal trên Linux

    Trong môi trường Linux chuyên sâu, Emacs không chỉ đơn thuần là một trình soạn thảo mà còn là một hệ sinh thái mạnh mẽ giúp tôi tối ưu hóa toàn bộ quy trình xử lý văn bản và lập trình chỉ trên một giao diện terminal duy nhất. Những kỹ thuật sử dụng và…

    06/05/2026

    Vim Linux là gì? Hướng dẫn sử dụng trình soạn thảo văn bản Vim trong Linux
    Vim Linux là gì? Hướng dẫn sử dụng trình soạn thảo văn bản Vim trong Linux

    Trong công việc quản trị hệ thống hàng ngày, Vim là công cụ giúp mình xử lý các tệp tin cấu hình trực tiếp trên Server với tốc độ mà các trình soạn thảo thông thường không thể đáp ứng được. Những hướng dẫn trong bài viết này không chỉ dừng lại ở lý thuyết,…

    06/05/2026

    linux

    lenh

    text