Sunday, January 19, 2025

AWK trong Linux

-

Awk là một công cụ mạnh mẽ trong Linux được sử dụng để xử lý và định dạng văn bản. Awk có thể thực hiện các tác vụ như tìm kiếm, lọc, định dạng và tính toán trên dữ liệu văn bản.

Cú pháp chung của awk là:

awk options 'pattern {actions}' file

Trong đó, options là các tùy chọn của awk, pattern là biểu thức để lọc các dòng phù hợp, actions là các hành động sẽ được thực hiện trên các dòng phù hợp và file là file sẽ được xử lý.

Dưới đây là một số ví dụ về cách sử dụng awk:

  • Lọc các dòng chứa từ cụ thể trong file:
awk '/apple/' file.txt

Trong đó, apple là từ cần tìm kiếm và file.txt là file cần lọc.

  • Lọc các dòng có độ dài bằng 4 ký tự:
awk 'length == 4' file.txt

Trong đó, length là hàm trả về độ dài của dòng và file.txt là file cần lọc.

  • Hiển thị nội dung của cột cụ thể:
awk '{print $2}' file.txt

Trong đó, $2 là chỉ số của cột và file.txt là file cần lọc.

  • Tính tổng của một cột:
awk '{sum += $1} END {print sum}' file.txt

Trong đó, sum là biến lưu trữ tổng và END là vị trí cuối cùng của awk.

  • Định dạng các dòng:
awk '{printf "%-8s %-8s %-8s\n", $1, $2, $3}' file.txt

Trong đó, %8s là độ rộng của cột và file.txt là file cần lọc.

Một số mẹo khi sử dụng awk:

  • Sử dụng -F để xác định ký tự phân tách giữa các cột.
  • Sử dụng biến để lưu trữ giá trị để tái sử dụng trong các hành động tiếp theo.
  • Sử dụng hàm substr để lấy một chuỗi con từ một chuỗi đã cho.
  • Sử dụng hàm tolower để đổi các ký tự thành ký tự thường.

Dưới đây là một số tip khi sử dụng awk trong Linux:

  1. Sử dụng biến trong awk:
  • Sử dụng biến trong awk bắt đầu bằng dấu ‘$’ và tên biến nằm trong dấu ngoặc kép.
  • Ví dụ:
awk '{if($1 >= 100) print $1}' file.txt

Trong đó, lệnh sẽ hiển thị các giá trị cột đầu tiên lớn hơn hoặc bằng 100 trong file.txt.

  1. Sử dụng lệnh tích hợp (built-in function) của awk:
  • Awk cung cấp một số lệnh tích hợp để xử lý dữ liệu, bao gồm ‘length’, ‘substr’, ‘index’, ‘split’ và ‘sprintf’.
  • Ví dụ:
awk '{print length($0)}' file.txt

Lệnh trên sẽ hiển thị độ dài của mỗi dòng trong file.txt.

  1. Sử dụng awk với các tập tin CSV:
  • Awk cũng có thể sử dụng để xử lý tập tin CSV (comma-separated values).
  • Ví dụ:
awk -F"," '{print $1 "," $3}' file.csv

Trong đó, tùy chọn ‘-F”,”‘ sẽ chỉ định dấu phẩy ‘,’ làm phân tách giữa các trường, và lệnh sẽ hiển thị các giá trị của cột thứ nhất và thứ ba trong file.csv, được ngăn cách bằng dấu phẩy.

5. Lấy ra các hàng (dòng) duy nhất của một file văn bản (không lặp lại):

awk '!seen[$0]++' file.txt

6. In ra các hàng có giá trị của một cột nằm trong một phạm vi giá trị cụ thể:

awk '$2 >= 50 && $2 <= 100' file.txt

7. Tính tổng giá trị của một cột:

awk '{ sum += $1 } END { print sum }' file.txt

8. Thay thế một chuỗi trong toàn bộ file văn bản:

awk '{gsub(/old_string/, "new_string"); print}' file.txt

9. Đếm số lượng hàng của file văn bản:

awk 'END { print NR }' file.txt
Previous article
Next article

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories