cuốn sách gpt4 ai đã làm

05. Cú pháp cơ bản của AWK

In lại Tác giả: Đường đến ông chủ Thời gian cập nhật: 21/01/2024 22:44:39 29 4
mua khóa gpt4 Nike

AWK cực kỳ đơn giản Nếu bạn cảm thấy khó khăn thì đó là do bạn chưa hiểu rõ quy trình làm việc và cú pháp của nó.

Đối với hầu hết mọi người, lý do khó là vì nó không được sử dụng phổ biến và ngữ pháp khó nhớ, haha.

Có hai cách để chạy chương trình AWK:

1. Một là sử dụng nó trực tiếp trong terminal (shell) như trong chương trước;
2. Một cách khác để sử dụng AWK là viết nó vào một tệp văn bản có tập lệnh Shell, sau đó chạy tệp văn bản đó, nhưng phương pháp này rất hiếm;

Sử dụng dòng lệnh AWK

Cách phổ biến nhất để sử dụng AWK là nhập trực tiếp tập lệnh AWK vào thiết bị đầu cuối.

awk [tùy chọn] tập tin ...

Để sử dụng nó trực tiếp từ dòng lệnh, chúng ta cần đặt mã AWK trong dấu ngoặc đơn ('').

Ví dụ

[www.ddkk.com]$ awk '{print}' nhân viên.txt

ví dụ

Giả sử chúng ta có tệp nhân viên nhanvien.txt. Trong tệp nhân viên này, mỗi nhân viên có một dòng và nội dung như sau.

1) Phòng kỹ thuật Zhang San 23 2) Phòng nhân sự Li Si 22 3) Phòng hành chính Wang Wu 23 4) Phòng kỹ thuật Zhao Liu 24 5) Phòng dịch vụ khách hàng Zhu Qi 23

Để hiển thị nội dung của file chúng ta có thể sử dụng lệnh cat member.txt

[www.ddkk.com]$ cat nhanvien.txt 1) Phòng kỹ thuật Zhang San 23 2) Phòng nhân sự Li Si 22 3) Phòng hành chính Wang Wu 23 4) Phòng kỹ thuật Zhao Liu 24 5) Phòng dịch vụ khách hàng Zhu Qi 23

Tất nhiên, chúng ta cũng có thể đạt được hiệu quả tương tự bằng cách sử dụng AWK.

[www.ddkk.com]$ awk '{print}' nhân viên.txt

Tệp chương trình AWK

Nếu có quá nhiều mã AWK, chúng ta cũng có thể viết mã AWK vào tệp văn bản .awk, sau đó chỉ định lệnh awk để sử dụng tệp tập lệnh AWK thông qua tùy chọn -f.

awk [tùy chọn] -f tập tin ....

Để thuận tiện cho việc trình diễn, chúng tôi lấy chương trình dòng lệnh AWK ở trên làm ví dụ. Chúng tôi có thể tạo một tệp mới có tên command.awk trong thư mục hiện tại, sau đó nhập nội dung sau vào command.awk.

{in}

Thực chất là đưa nội dung giữa các dấu ngoặc đơn ('') vào file command.awk.

Cuối cùng, chúng ta có thể chạy tệp command.awk thông qua lệnh sau

[www.ddkk.com]$ awk -f command.awk nhân viên.txt

Chạy đoạn mã trên, chúng ta có thể thấy kết quả đầu ra hoàn toàn giống như trên

[www.ddkk.com]$ awk -f command.awk nhân viên.txt 1) Phòng Kỹ thuật Zhang San 23 2) Phòng Nhân sự Li Si 22 3) Phòng Hành chính Wang Wu 23 4) Phòng Kỹ thuật Zhao Liu 24 5) Zhu Qi Phòng Dịch vụ Khách hàng 23

Tùy chọn tiêu chuẩn AWK

Lệnh awk của chương trình dòng lệnh hỗ trợ một số tùy chọn tiêu chuẩn và chúng ta có thể sử dụng các tùy chọn này để tùy chỉnh chương trình awk.

Dưới đây, chúng tôi liệt kê một số tùy chọn phổ biến

tùy chọn -v

Tùy chọn -v được sử dụng để xác định trước một số biến. Các biến được xác định trước này sẽ được xác định trước khi thực hiện chương trình AWK cụ thể. Nói chính xác, chúng đã được xác định trước câu lệnh BEGIN. Đã có sẵn để sử dụng trong câu lệnh BEGIN

Mã dòng lệnh awk sau đây minh họa cách sử dụng tùy chọn -v, tùy chọn này xác định một biến site và chỉ định giá trị là www.ddkk.com

[www.ddkk.com]$ awk -v site=www.ddkk.com 'BEGIN{printf "Site = %s\n", site}'

Chạy lệnh trên và kết quả sẽ như sau

Trang web = www.ddkk.com

Tùy chọn --dump-variables[=file]

Awk mặc định của hệ thống Mac OS không hỗ trợ tùy chọn này.

--dump-variables[=file] được sử dụng để hiển thị/xuất tất cả các biến toàn cục hiện được xác định theo thứ tự bảng chữ cái.

Nếu [=file] không được chỉ định, tệp xuất mặc định là awkvars.out

[www.ddkk.com]$ awk --dump-variables '' [www.ddkk.com]$ cat awkvars.out

Chạy lệnh trên và kết quả sẽ như sau

ARGC: số (1) ARGIND: số (0) ARGV: mảng, 1 phần tử BINMODE: số (0) CONVFMT: chuỗi ("%.6g") ERRNO: số (0) FIELDWIDTHS: chuỗi ("") TÊN TỆP: chuỗi ("") FNR: số (0) FS: chuỗi ("") BỎ QUA: số (0) LINT: số (0) NF: số (0) NR: số (0) OFMT: chuỗi ("%.6g") OFS: chuỗi (" ") ORS: chuỗi ("\n") RLENGTH: số (0) RS: chuỗi ("\n") RSTART: số (0) RT: chuỗi ("") SUBSEP: chuỗi ("\034") TEXTDOMAIN: chuỗi ("tin nhắn")

--tùy chọn trợ giúp

Awk mặc định của hệ thống Mac OS không hỗ trợ tùy chọn này.

Tùy chọn --help được sử dụng để xuất thông tin trợ giúp cho lệnh awk

[www.ddkk.com]$ awk --help

Chạy đoạn script trên và kết quả sẽ như sau

Cách sử dụng: awk [Tùy chọn kiểu POSIX hoặc GNU] -f tệp tập lệnh [--] tệp... Cách sử dụng: awk [Tùy chọn kiểu POSIX hoặc GNU] [--] tệp 'chương trình'... Tùy chọn POSIX: Tùy chọn dài GNU: -f tệp tập lệnh --file=tệp tập lệnh -F fs --field-separator=fs -v var=val --sign=var=val -m[fr] val -O --optimize -W compat --compat -W copyleft --copyleft -W bản quyền --copyright -W dump-variables[=file] --dump-variables[=file] -W exec=file --exec=file -W gen- po --gen-po -W help --help -W lint[=fatal] --lint[=fatal] -W lint-old --lint-old -W non-decimal-data --non-decimal-data -W profile[=file] --profile[=file] -W posix --posix -W re-interval --re-interval -W source=program-text --source=program-text -W traditional --traditional -W cách sử dụng --usage -W use-lc-numeric --use-lc-numeric -W version --version Để gửi báo cáo lỗi, vui lòng tham khảo trang "Lỗi" trong "gawk.info", nằm bên dưới " Báo cáo sự cố" trong phiên bản in và Nếu có bất kỳ lỗi dịch thuật nào trong phần "Lỗi", vui lòng gửi email đến Translation-team-zh-cn@lists.sourceforge.net gawk là ngôn ngữ quét và xử lý mẫu. Theo mặc định, nó đọc từ đầu vào tiêu chuẩn và ghi vào đầu ra tiêu chuẩn. Ví dụ: gawk '{ sum += $1 }; END { print sum }' file gawk -F: '{ print $1 }' /etc/passwd

tùy chọn --lint[=fatal]

Awk mặc định của hệ thống Mac OS không hỗ trợ tùy chọn này.

Tùy chọn --lint được sử dụng để kiểm tra mã AWK hiện tại và luồng đầu vào hiện tại. Nói chung, nó chủ yếu kiểm tra các cấu trúc đáng ngờ và mã không di động.

Nếu [=fatal] được chỉ định, thông báo cảnh báo sẽ được coi là thông báo lỗi, có nghĩa là chương trình sẽ tự động chấm dứt khi gặp thông báo cảnh báo.

Ví dụ: trong tập lệnh awk bên dưới, chúng tôi sử dụng /bin/ls làm luồng đầu vào. Vì /bin/ls là tệp nhị phân nên sẽ báo lỗi khi sử dụng --Link.

[www.ddkk.com]$ awk --lint '' /bin/ls

Chạy file trên và kết quả sẽ như sau

awk: Cảnh báo: Phần thân chương trình trong dòng lệnh trống awk: Cảnh báo: Tệp nguồn không kết thúc bằng ký tự dòng mới awk: Cảnh báo: Không có phần thân chương trình nào cả!

tùy chọn --posix

Awk mặc định của hệ thống Mac OS không hỗ trợ tùy chọn này.

Tùy chọn --posix được sử dụng để cho phép kiểm tra khả năng tương thích POSIX nghiêm ngặt.

Trong chế độ kiểm tra khả năng tương thích POSIX nghiêm ngặt, hầu hết tất cả các tiện ích mở rộng phổ biến và dành riêng cho gawk được xác định trong

tùy chọn --profile[=file]

Awk mặc định của hệ thống Mac OS không hỗ trợ tùy chọn này.

Tùy chọn --profile[=file] được sử dụng để định dạng và xuất mã chương trình awk hiện tại thành tệp tệp.

Nếu [=file] không được chuyển, tệp mặc định là awkprof.out trong thư mục hiện tại.

Ví dụ: trong lệnh awk sau, chúng tôi sử dụng --profile để định dạng mã của mình

[www.ddkk.com]$ awk --profile 'BEGIN{printf"---|Tiêu đề|--\n"} {print} END{printf"---|Chân trang|---\n"}' nhanvien.txt > /dev/null [www.ddkk.com]$ cat awkprof.out

Chạy chương trình awk trên, kết quả đầu ra như sau

   # cấu hình gawk, tạo Thứ bảy ngày 25 tháng 5 12:13:10 2019 # BEGIN block BEGIN { printf "---|Header|--\n" } # Rules { print $0 } # END block END { printf "---| Chân trang|---\n" }

--tùy chọn truyền thống

Awk mặc định của hệ thống Mac OS không hỗ trợ tùy chọn này.

Tùy chọn --traditional vô hiệu hóa tất cả các tiện ích mở rộng dành riêng cho gawk.

--tùy chọn phiên bản

Tùy chọn --version được sử dụng để hiển thị phiên bản hiện tại của chương trình dòng lệnh awk

[www.ddkk.com]$ awk --version

Chạy lệnh trên và nhập kết quả sau (máy tính Apple)

[www.ddkk.com]$ awk --version phiên bản awk 20070501

Đối với các hệ thống Linux khác, kết quả như sau

GNU Awk 3.1.7 Bản quyền © 1989, 1991-2009 Tổ chức Phần mềm Tự do (FSF). Chương trình này là phần mềm miễn phí và bạn có thể sửa đổi hoặc phân phối lại nó theo phiên bản 3 trở lên của Giấy phép Công cộng GNU (GPL) do Tổ chức Phần mềm Tự do xuất bản. Chương trình này được phân phối với hy vọng nó sẽ hữu ích cho bạn nhưng không có bất kỳ bảo đảm nào. Điều này bao gồm nhưng không giới hạn ở bất kỳ bảo đảm nào về khả năng bán được và sự phù hợp cho một mục đích cụ thể. Xem Giấy phép Công cộng GNU (GPL) để biết chi tiết. Bạn hẳn đã nhận được một bản sao Giấy phép Công cộng GNU (GPL) kèm theo chương trình. Nếu bạn chưa nhận được, vui lòng tham khảo http://www.gnu.org/licenses/ 

29 4 0
Bài viết khuyến nghị: 08. Toán tử AWK
Bài viết khuyến nghị: 04. Cổng WSDL
Bài viết khuyến nghị: 01. Hướng dẫn WSDL
Bài viết khuyến nghị: 31. Chuyển hướng đầu ra AWK
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress