Lệnh gawk trong linux là một công cụ 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 duyệt qua 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. Gawk rất hữu ích cho việc định dạng báo cáo, lọc thông tin và thực hiện các phép tính đơn giản. Với cú pháp linh hoạt, gawk giúp bạn tự động hóa nhiều tác vụ xử lý văn bản.
Lệnh gawk trong linux là gì?
Command gawk in linux là một công cụ mạnh mẽ để xử lý và trích xuất dữ liệu từ các tệp văn bản, hoạt động theo từng dòng. Nó cho phép bạn tìm kiếm các mẫu cụ thể, thực hiện các phép toán và định dạng lại dữ liệu một cách linh hoạt. Gawk sử dụng một ngôn ngữ lập trình riêng để xác định các hành động cần thực hiện trên mỗi dòng dữ liệu. Với gawk, bạn có thể dễ dàng tạo ra các báo cáo tùy chỉnh hoặc trích xuất thông tin quan trọng từ các tệp nhật ký lớn. Đây là một công cụ không thể thiếu cho những ai làm việc với dữ liệu văn bản trên hệ thống Linux.
Giới thiệu về lệnh gawk
Trong bước này, bạn sẽ làm quen với lệnh gawk, một công cụ xử lý văn bản mạnh mẽ trên Linux.
gawk là một ngôn ngữ lập trình cho phép bạn thao tác và trích xuất dữ liệu từ các tệp văn bản.
Trước tiên, hãy kiểm tra phiên bản gawk đã được cài đặt trên hệ thống của bạn bằng lệnh sau:
gawk --version
Ví dụ về kết quả trả về:
GNU Awk 5.1.0, API: 2.0 (GNU MPFR 4.1.0, GNU MP 6.2.0)
Copyright (C) 1989, 1991-2021, the Free Software Foundation.
Lệnh gawk được sử dụng để tìm kiếm và xử lý các tệp văn bản một cách hiệu quả.
Nó có thể thực hiện nhiều thao tác khác nhau, ví dụ như:
- Trích xuất các trường hoặc cột cụ thể từ một tệp văn bản.
- Thực hiện các phép tính và chuyển đổi trên dữ liệu.
- Tạo các báo cáo và tóm tắt dữ liệu một cách nhanh chóng.
- Tự động hóa các tác vụ dựa trên văn bản một cách dễ dàng.
Để bắt đầu, hãy tạo một tệp văn bản mẫu mà chúng ta sẽ sử dụng trong lab này.
cat > ~/project/data.txt << EOF
Name,Age,City
John,25,New York
Jane,30,London
Bob,35,Paris
EOF
Tệp này chứa danh sách tên, tuổi và thành phố, được phân tách bằng dấu phẩy.
Bây giờ, hãy thử một lệnh gawk đơn giản để in toàn bộ nội dung của tệp.
gawk '{print}' ~/project/data.txt
Ví dụ về kết quả trả về:
Name,Age,City
John,25,New York
Jane,30,London
Bob,35,Paris
Trong lệnh này, phần '{print}' yêu cầu gawk in ra từng dòng của tệp.
Hãy cùng phân tích cấu trúc cơ bản của một lệnh gawk để hiểu rõ hơn.
gawk: Đây chính là lệnh gawk mà chúng ta đang sử dụng.'{print}': Đây là pattern (mẫu) và action (hành động). Trong trường hợp này, pattern rỗng (khớp với tất cả các dòng), và action là in dòng đó.~/project/data.txt: Đây là tệp đầu vào mà gawk sẽ xử lý.
Trong bước tiếp theo, bạn sẽ học cách trích xuất dữ liệu cụ thể từ tệp văn bản bằng gawk.
Trích Xuất Dữ Liệu từ Tệp Văn Bản bằng gawk
Trong bước này, bạn sẽ học cách sử dụng gawk để trích xuất dữ liệu cụ thể từ tệp văn bản đã tạo ở bước trước.
Hãy bắt đầu bằng cách in cột thứ hai (Age) từ tệp data.txt nhé.
gawk '{print $2}' ~/project/data.txt
Ví dụ về đầu ra:
Age
25
30
35
Trong lệnh này, $2 đại diện cho cột thứ hai của dữ liệu đầu vào. gawk tự động chia mỗi dòng thành các trường (cột) dựa trên dấu phân cách (trong trường hợp này là dấu phẩy).
Để in cột thứ nhất và thứ ba (Name và City), bạn có thể sử dụng lệnh sau:
gawk '{print $1, $3}' ~/project/data.txt
Ví dụ về đầu ra:
Name City
John New York
Jane London
Bob Paris
Bạn cũng có thể sử dụng tùy chọn -F để chỉ định một dấu phân cách trường khác. Ví dụ, để sử dụng dấu phẩy làm dấu phân cách trường:
gawk -F, '{print $1, $3}' ~/project/data.txt
Ví dụ về đầu ra:
Name City
John New York
Jane London
Bob Paris
Ngoài ra, gawk cho phép bạn thực hiện xử lý có điều kiện. Ví dụ, để chỉ in tên của những người lớn hơn 30:
gawk -F, '$2 > 30 {print $1}' ~/project/data.txt
Ví dụ về đầu ra:
Bob
Trong lệnh này, $2 > 30 là điều kiện, và {print $1} là hành động được thực hiện cho các dòng khớp với điều kiện.
Hãy thử nghiệm với các lệnh gawk khác nhau để trích xuất và thao tác dữ liệu trong tệp data.txt. Càng thực hành nhiều, bạn càng cảm thấy thoải mái hơn khi sử dụng gawk cho các tác vụ xử lý văn bản.
Thực hiện Tính toán và Chuyển đổi với gawk
Trong bước này, bạn sẽ học cách sử dụng gawk để tính toán và chuyển đổi dữ liệu trong file data.txt.
Chúng ta hãy bắt đầu bằng cách tính tuổi trung bình của những người trong file này nhé.
gawk -F, '{sum += $2} END {print "Average age:", sum/NR}' ~/project/data.txt
Ví dụ về kết quả:
Average age: 30
Trong câu lệnh này:
{sum += $2}cộng giá trị của cột thứ hai (tuổi) vào biếnsumcho mỗi dòng.END {print "Average age:", sum/NR}tính tuổi trung bình bằng cách chia tổng cho số lượng bản ghi (NR).
Tiếp theo, hãy chuyển đổi dữ liệu bằng cách đổi tuổi thành năm và tháng nhé.
gawk -F, '{years = int($2 / 1); months = ($2 % 1) * 12; print $1, years "y", months "m"}' ~/project/data.txt
Ví dụ về kết quả:
John 25y 0m
Jane 30y 0m
Bob 35y 0m
Trong câu lệnh này:
{years = int($2 / 1); months = ($2 % 1) * 12; print $1, years "y", months "m"}tính năm và tháng từ giá trị tuổi ở cột thứ hai.
Bạn cũng có thể dùng gawk để tạo báo cáo với các phép tính hoặc chuyển đổi khác. Ví dụ, tạo báo cáo gồm tên, tuổi, thành phố và "bậc thuế" dựa trên tuổi:
gawk -F, '{
if ($2 < 30)
tax_bracket = "Low"
else if ($2 >= 30 && $2 < 50)
tax_bracket = "Medium"
else
tax_bracket = "High"
print $1, $2, $3, tax_bracket
}' ~/project/data.txt
Ví dụ về kết quả:
John 25 New York Low
Jane 30 London Medium
Bob 35 Paris Medium
Trong câu lệnh này:
- Câu lệnh
if-elsexác định bậc thuế dựa trên tuổi của mỗi người. - Câu lệnh
printin ra tên, tuổi, thành phố và bậc thuế cho mỗi bản ghi.
Hãy thoải mái thử nghiệm với các lệnh và chuyển đổi gawk nâng cao hơn để khám phá thêm khả năng của công cụ xử lý văn bản mạnh mẽ này nhé.
Kết luận cho linux gawk command
Vậy là chúng ta đã cùng nhau khám phá những điều thú vị về lệnh gawk 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 gawk command thực sự là một trợ thủ đắc lực giúp bạn xử lý dữ liệu 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 những kiến thức đã học vào thực tế, bạn sẽ thấy gawk hữu ích như thế nào. Hãy nhớ rằng, việc luyện tập thường xuyên sẽ giúp bạn thành thạo hơn trong việc sử dụng gawk. Chúc bạn thành công trên con đường chinh phục linux gawk command và khám phá những điều kỳ diệu khác của Linux!