Awk: Học Shell Scripting sử dụng lệnh awk Terminal Command

Awk: Học Shell Scripting sử dụng lệnh awk Terminal Command

Awk: Học Shell Scripting sử dụng lệnh awk Terminal Command

Lệnh "awk" trong Hệ điều hành miễn phí kiểu GNU / Linux là một lệnh rất mạnh, giúp chúng ta kiểm soát tốt hơn khi xử lý dữ liệu từ các lệnh hoặc lệnh khác. Tên AWK bắt nguồn từ chữ cái đầu của họ các tác giả của nó: Alfred Aho, peter Weinberger và Brian KErnighan.

Lệnh này cung cấp một ngôn ngữ kịch bản để xử lý văn bản mà chúng ta có thể: Xác định biến, sử dụng chuỗi và toán tử số học, sử dụng điều khiển luồng và chu trình, đồng thời tạo báo cáo được định dạng. Trên thực tế, Awk không chỉ là một lệnh xử lý mẫu, nó còn là một ngôn ngữ phân tích ngữ nghĩa toàn bộ.

Giới thiệu về lệnh "awk"

AWK là một trong những tiện ích bảng điều khiển rất phổ biến đầu tiên để quản lý (xử lý / trích xuất) dữ liệu bằng cách tối đa hóa chức năng của các đường ống UNIX. Ngôn ngữ được cung cấp bởi tiện ích này hiện là tiêu chuẩn trong hầu hết tất cả các Hệ điều hành giống UNIX hiện đại, đến nỗi nó là một phần của Thông số kỹ thuật UNIX cơ bản, vì vậy nó thường được cài đặt sẵn trong hầu hết các Hệ điều hành này theo mặc định.

Cú pháp phổ biến nhất của nó là: tệp awk 'chương trình' và trong đó 'chương trình' có thể là: mẫu {action} mẫu {action}. Lệnh đọc đầu vào tệp một dòng tại một thời điểm. Mỗi hàng được so sánh với mỗi mẫu theo thứ tự; đối với mỗi mẫu phù hợp với hàng, hành động tương ứng được thực hiện.

Một ví dụ đơn giản như:

awk -F: '$1=="root" {print}' /etc/passwd

nó yêu cầu trường đầu tiên nếu nó là gốc của mỗi dòng trong / etc / passwd và in nó ra xem xét ":" với -F: làm dấu phân cách trường.

Ví dụ giới thiệu Awk

Ví dụ thực tế

Danh sách lệnh được sử dụng nhiều nhất

Xem danh sách dựa trên lịch sử của thiết bị đầu cuối Hệ thống được sắp xếp từ thứ được sử dụng thường xuyên nhất đến ít được sử dụng nhất.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Ví dụ:

Ví dụ 1: Lệnh Awk

Biểu đồ (Bảng) với số lượng kết nối cho mỗi máy chủ

Tạo biểu đồ dựa trên văn bản ASCII hiển thị tổng số kết nối từ máy chủ đến từng địa chỉ IP.

netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'

Ví dụ:

Ví dụ 2: Lệnh Awk

Danh sách thư mục theo kích thước

In ra màn hình danh sách các thư mục của đường dẫn hiện tại từ lớn nhất đến nhỏ nhất hiển thị các nhãn tương ứng với kích thước của chúng bằng cách sử dụng các chữ cái: g, m và k.

du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'

Ví dụ:

Ví dụ 3: Lệnh Awk

Hiển thị lưu lượng truy cập từ Giao diện mạng

Xem trực tuyến mức tiêu thụ dữ liệu gửi đến và gửi đi theo kilobyte (kb) cho một giao diện mạng cụ thể.

while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done

Ví dụ:

Lấy chuỗi số fibonacci

Tạo một danh sách các số lượng X theo mẫu fibonacci cho trước 2 số cơ sở sẽ được xây dựng.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

Ví dụ:

Ví dụ 5: Lệnh Awk

Danh sách đồ họa của cấu trúc tệp theo kích thước

Nhận Danh sách tất cả các thư mục trong thư mục gốc của hệ điều hành cùng với biểu diễn đồ họa (thanh) và số dưới dạng phần trăm kích thước của chúng trong đó.

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Ví dụ:

Ví dụ 6: Lệnh Awk

Liệt kê tóm tắt các loại tệp trong Thư mục

Hiển thị danh sách các loại tệp có trong một thư mục cùng với số lượng tệp tương ứng với nó.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

Ví dụ:

Ví dụ 8: Lệnh Awk

Những ví dụ về các dòng lệnh sử dụng lệnh awk, tôi hy vọng bạn thấy chúng rất hữu ích. Và chúng được sử dụng trực tiếp từ bảng điều khiển hoặc gián tiếp bằng cách chèn chúng vào một tập lệnh (tác vụ tự động).

Trong bài tiếp theo về Shell Scripting, chúng ta sẽ khám phá các lệnh khác.

Nếu bạn muốn tìm hiểu thêm một chút về lệnh "grep", hãy truy cập liên kết này "DEBIAN Wiki”Và nếu bạn muốn tìm hiểu thêm về Shell Scripting trong Blog của riêng chúng tôi, bạn có thể xem các ấn phẩm khác của chúng tôi về chủ đề này, bằng cách nhấp vào đây: Viết kịch bản DesdeLinux


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   TUXITO dijo

    Tôi chỉ hiểu ví dụ đầu tiên, không có gì khác 🙁