- 921. Thêm tối thiểu để làm cho dấu ngoặc đơn hợp lệ Thêm tối thiểu để làm cho dấu ngoặc đơn hợp lệ
- 915. Phân vùng mảng thành các khoảng rời rạc
- 932. Mảng đẹp Mảng đẹp
- 940. Dãy số riêng biệt II Dãy số khác nhau II
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;
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
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
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
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 đượ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
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")
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
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ả!
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
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" }
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 --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/
Trong một câu hỏi khác được trả lời ở đây, tôi đã tìm thấy mã JavaScript sau: function _dom_trackActiveElement(evt) { if (evt && evt.target)
Làm thế nào để nói nếu (A == 0) HOẶC (B == 0)? Câu trả lời hay nhất chỉ mang tính mỉa mai: if (A === 0 || B === 0) Về cú pháp, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow:
var ret = [] ,xresult = document.evaluate(exp, rootEl, null, X
Tôi đang tìm kiếm một số JavaScript tương tự như ví dụ bên dưới. Ai đó có thể vui lòng giải thích điều này vì tôi chưa bao giờ thấy JavaScript được viết như thế này trước đây. "SomethingHere" và dấu hai chấm có nghĩa là gì? Tôi đã quen với chức năng myFun
Đây là thủ tục của tôi: dấu phân cách // bỏ thủ tục nếu tồn tại migcontactToActor tạo thủ tục migcontactToActor(;
Tôi đã gặp phải một vấn đề. Tôi đã sử dụng gcc để biên dịch/lắp ráp mã C của mình được một thời gian và đã quen với việc đọc cú pháp lắp ráp của Intel. Tôi đã sử dụng cờ -masm=intel khi tạo tệp lắp ráp. Nhưng gần đây do công ty chuyển địa điểm nên tôi nhận được
Sự khác biệt giữa cú pháp từ trên xuống và từ dưới lên là gì? Một ví dụ sẽ là tuyệt vời. Câu trả lời hay nhất Đầu tiên, bản thân ngữ pháp không phải từ trên xuống hay từ dưới lên, mà là các trình phân tích cú pháp (mặc dù một số ngữ pháp có thể được phân tích cú pháp bằng cái này chứ không phải cái kia). Từ góc độ thực tế, sự khác biệt chính là
Tôi biết đây là mã cẩu thả, nhưng đây là: hộp thoại hiển thị ("Khởi động Trình bảo vệ màn hình. Vui lòng nhập: ma trận, cà phê, bánh quế, ngôi sao, wate
Câu hỏi này đã có câu trả lời: Đặt tên cho vòng lặp (6 câu trả lời) Đã đóng 8 năm trước. Tôi đã thấy ký tự này được sử dụng trong phần mở rộng giống như C# trong Java nhưng gần đây tôi đã tìm thấy ký tự này trong mã của mình
Tôi đang cố gắng viết một hàm để kiểm tra xem một chuỗi có phải là một bảng màu hay không, nhưng tôi nghĩ có một số lỗi khi sử dụng con trỏ chuỗi. Có gì sai với mã này? #include #include #define MAX 1000 int IsPalin
Vì vậy, trong câu hỏi này, tôi đã hỏi cách nén một số Javascript. Câu hỏi đã được trả lời, nhưng đoạn trích sau làm tôi bối rối đến mức tôi phải hỏi một câu hỏi khác. Ở đây: for (Y = 0; $ = 'zx
Giả sử tôi có một hàm chấp nhận các tham số này. int create(Ptr * p,void * (*insert)(void *, void *)) { //trả lại thứ gì đó sau } Kết quả
Câu hỏi này đã có câu trả lời: Toán tử Bitwise '&' (6 câu trả lời) Đã đóng 5 năm trước. Tôi đã tìm thấy điều này trong mã, nhưng tôi chưa bao giờ gặp bất cứ điều gì như &, chỉ && if ((code & 1) =
Tôi đang gặp khó khăn khi xử lý cú pháp của các lớp kế thừa cũng như các hàm tạo và phương thức bên trong chúng. Tôi muốn triển khai một lớp Date và một lớp con date_ISO sẽ đặt ngày, tháng, năm nhất định theo một thứ tự cụ thể và ghi nó vào một chuỗi thông qua một phương thức. Tôi nghĩ lớp cơ sở Date của tôi đang hoạt động tốt
Tôi đang cố gắng điền vào một bảng thông qua một thủ tục được lưu trữ như thế này: SET @resultsCount = (SELECT COUNT(*) FROM tableA);
Có ai có thể giải thích "<<" trong mã bên dưới không? kiểm tra mysql<
Tôi mới bắt đầu học MySQL, vì vậy đây là câu hỏi của người mới và là câu hỏi đầu tiên của tôi về StackOverflow. Giả sử tôi có 12 trạng thái đơn hàng và tôi muốn chọn tổng số từ 5 trạng thái trong số đó. Tôi sẽ sử dụng: SELECT SUM(tot
Nền tảng lập trình của tôi là học một chút Java ở trường. Vì lý do nào đó, cú pháp JavaScript có xu hướng làm tôi bối rối. Đoạn mã JavaScript sau đây là một mẫu cú pháp mà tôi không biết cách tạo thành: foo.ready = funct
Tôi đang đọc mã nguồn javascript và trước đây tôi chưa từng viết javascript. Tôi bối rối bởi một số cú pháp của nó. $(function () { window.onload=function
Tôi thậm chí còn không biết gọi tên thứ mình muốn. Vì vậy, hãy để tôi giải thích bằng một ví dụ. Mặc dù Firefox sử dụng textContent nhưng các trình duyệt khác vẫn hỗ trợ thuộc tính InnerText. BTW, vui lòng sửa lại cho tôi nếu tôi sử dụng thuật ngữ sai. Dù sao thì cho đến nay
Tôi là một lập trình viên xuất sắc, rất giỏi!