Tiếng AnhTiếng PhápTiếng Tây Ban Nha

Ad


Biểu tượng yêu thích OnWorks

gawk - Trực tuyến trên đám mây

Chạy gawk trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là lệnh gawk có thể được chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


gawk - ngôn ngữ xử lý và quét mẫu

SYNOPSIS


chim ưng [Tùy chọn kiểu POSIX hoặc GNU] -f tập tin chương trình [ -- ] tập tin ...
chim ưng [Tùy chọn kiểu POSIX hoặc GNU] [ -- ] chương trình-văn bản tập tin ...

MÔ TẢ


trố mắt là sự triển khai của Dự án GNU của ngôn ngữ lập trình AWK. Nó phù hợp với
định nghĩa của ngôn ngữ trong Tiêu chuẩn POSIX 1003.1. Phiên bản này đến lượt là
dựa trên mô tả trong Sản phẩm AWK Lập trình Ngôn ngữ, bởi Aho, Kernighan, và
Weinberger. trố mắt cung cấp các tính năng bổ sung có trong phiên bản hiện tại của Brian
Kernighan's ôi và một số phần mở rộng dành riêng cho GNU.

Dòng lệnh bao gồm các tùy chọn để chim ưng chính nó, văn bản chương trình AWK (nếu không được cung cấp
thông qua -f or --tập tin tùy chọn) và các giá trị được cung cấp trong ARGCARGV trước
các biến AWK đã xác định.

Thời Gian chim ưng được gọi với --Hồ sơ tùy chọn, nó bắt đầu thu thập thống kê hồ sơ
từ việc thực hiện chương trình. trố mắt chạy chậm hơn trong chế độ này và tự động
tạo một hồ sơ thực thi trong tệp awkprof.out khi hoàn thành. Xem --Hồ sơ
bên dưới.

trố mắt cũng có một trình gỡ lỗi tích hợp. Một phiên gỡ lỗi tương tác có thể được bắt đầu bằng
cung cấp --gỡ lỗi tùy chọn vào dòng lệnh. Trong phương thức thực thi này, chim ưng tải
mã nguồn AWK và sau đó nhắc các lệnh gỡ lỗi. trố mắt chỉ có thể gỡ lỗi AWK
nguồn chương trình được cung cấp với -f lựa chọn. Trình gỡ lỗi được ghi lại trong TRÒ CHƠI: Hiệu quả
AWK Lập trình.

TÙY CHỌN FORMAT


trố mắt các tùy chọn có thể là tùy chọn một chữ cái kiểu POSIX truyền thống hoặc dài kiểu GNU
tùy chọn. Các tùy chọn POSIX bắt đầu bằng một dấu “-”, trong khi các tùy chọn dài bắt đầu bằng “-”. Dài
các tùy chọn được cung cấp cho cả các tính năng dành riêng cho GNU và cho các tính năng được ủy quyền của POSIX.

trố mắt-các tùy chọn cụ thể thường được sử dụng ở dạng tùy chọn dài. Đối số cho các tùy chọn dài
được kết hợp với tùy chọn bởi một = ký tên, không có khoảng trắng xen vào, hoặc chúng có thể là
được cung cấp trong đối số dòng lệnh tiếp theo. Các tùy chọn dài có thể được viết tắt, miễn là
chữ viết tắt vẫn là duy nhất.

Ngoài ra, mỗi tùy chọn dài đều có một tùy chọn ngắn tương ứng, do đó tùy chọn của
chức năng có thể được sử dụng từ bên trong #! các tập lệnh thực thi.

LỰA CHỌN


trố mắt chấp nhận các tùy chọn sau. Các tùy chọn tiêu chuẩn được liệt kê đầu tiên, tiếp theo là
tùy chọn cho chim ưng phần mở rộng, được liệt kê theo thứ tự bảng chữ cái theo tùy chọn ngắn.

-f tập tin chương trình
--tập tin tập tin chương trình
Đọc nguồn chương trình AWK từ tệp tập tin chương trình, thay vì từ đầu tiên
đối số dòng lệnh. Nhiều -f (Hoặc --tập tin) các tùy chọn có thể được sử dụng.

-F fs
- dấu phân cách trường fs
Sử dụng fs cho dấu phân tách trường đầu vào (giá trị của FS biến xác định trước).

-v =val
--giao phó =val
Chỉ định giá trị val đến biến , trước khi bắt đầu thực thi chương trình.
Các giá trị biến như vậy có sẵn cho BEGIN quy tắc của một chương trình AWK.

-b
- ký tự dưới dạng byte
Coi tất cả dữ liệu đầu vào là các ký tự byte đơn. Nói cách khác, không trả bất kỳ
chú ý đến thông tin ngôn ngữ khi cố gắng xử lý chuỗi dưới dạng multibyte
nhân vật. Các --posix tùy chọn ghi đè tùy chọn này.

-c
--truyên thông
Chạy vào khả năng tương thích chế độ. Trong chế độ tương thích, chim ưng cư xử giống hệt nhau với
Brian Kernighan's ôi; không có phần mở rộng dành riêng cho GNU nào được công nhận. Nhìn thấy GNU
MỞ RỘNG, bên dưới, để biết thêm thông tin.

-C
- bản quyền
In phiên bản ngắn của thông báo thông tin bản quyền GNU trên tiêu chuẩn
xuất và thoát thành công.

-d[hồ sơ]
--dump-biến[=hồ sơ]
In danh sách các biến toàn cục đã được sắp xếp, loại và giá trị cuối cùng của chúng để hồ sơ. Nếu
Không hồ sơ được cung cấp, chim ưng sử dụng một tệp có tên awkvars.out trong thư mục hiện tại.
Có một danh sách tất cả các biến toàn cục là một cách tốt để tìm kiếm kiểu chữ
lỗi trong chương trình của bạn. Bạn cũng sẽ sử dụng tùy chọn này nếu bạn có
chương trình với rất nhiều chức năng và bạn muốn chắc chắn rằng các chức năng của bạn không
vô tình sử dụng các biến toàn cục mà bạn muốn là cục bộ. (Đây là một
đặc biệt dễ mắc lỗi với các tên biến đơn giản như i, j, và như thế.)

-D[hồ sơ]
--gỡ lỗi[=hồ sơ]
Bật gỡ lỗi các chương trình AWK. Theo mặc định, trình gỡ lỗi đọc các lệnh
tương tác từ bàn phím (đầu vào tiêu chuẩn). Tùy chọn hồ sơ đối số
chỉ định một tệp với danh sách các lệnh để trình gỡ lỗi thực thi không
một cách tương tác.

-e chương trình-văn bản
--nguồn chương trình-văn bản
Sử dụng chương trình-văn bản dưới dạng mã nguồn chương trình AWK. Tùy chọn này cho phép dễ dàng
trộn lẫn các chức năng thư viện (được sử dụng thông qua -f--tập tin tùy chọn) với nguồn
mã được nhập trên dòng lệnh. Nó chủ yếu dành cho AWK vừa đến lớn
các chương trình được sử dụng trong các tập lệnh shell.

-E hồ sơ
--exec hồ sơ
Tương tự như -f, tuy nhiên, đây là tùy chọn được xử lý cuối cùng. Điều này nên được
được sử dụng với #! tập lệnh, đặc biệt cho các ứng dụng CGI, để tránh chuyển
tùy chọn hoặc mã nguồn (!) trên dòng lệnh từ một URL. Tùy chọn này vô hiệu hóa
các phép gán biến dòng lệnh.

-g
--gen-nồi
Quét và phân tích cú pháp chương trình AWK và tạo GNU .nồi (Mẫu đối tượng di động)
định dạng tệp trên đầu ra tiêu chuẩn với các mục nhập cho tất cả các chuỗi có thể bản địa hóa trong
chương trình. Bản thân chương trình không được thực thi. Xem GNU gettext phân phối cho
thêm thông tin về .nồi các tập tin.

-h
--Cứu giúp In một bản tóm tắt tương đối ngắn về các tùy chọn có sẵn trên đầu ra tiêu chuẩn.
(Theo GNU Lập trình Tiêu chuẩn, các tùy chọn này tạo ra một lần thoát ngay lập tức, thành công.)

-i bao gồm tập tin
--bao gồm bao gồm tập tin
Tải thư viện nguồn awk. Điều này tìm kiếm thư viện bằng cách sử dụng AWKPATH
biến môi trường. Nếu tìm kiếm ban đầu không thành công, một nỗ lực khác sẽ được thực hiện
sau khi thêm vào .awk hậu tố. Tệp sẽ chỉ được tải một lần (tức là,
các bản sao bị loại bỏ) và mã không cấu thành chương trình chính
nguồn.

-l lib
--trọng tải lib
Tải thư viện được chia sẻ lib. Điều này tìm kiếm thư viện bằng cách sử dụng AWKLIBPATH
biến môi trường. Nếu tìm kiếm ban đầu không thành công, một nỗ lực khác sẽ được thực hiện
sau khi thêm hậu tố thư viện được chia sẻ mặc định cho nền tảng. Thư viện
quy trình khởi tạo dự kiến ​​sẽ được đặt tên dl_load ().

-L [giá trị]
--lint[=giá trị]
Đưa ra cảnh báo về các cấu trúc đáng ngờ hoặc không thể di động đối với AWK khác
triển khai. Với một đối số tùy chọn là gây tử vong, cảnh báo xơ vải trở nên nguy hiểm
các lỗi. Điều này có thể rất quyết liệt, nhưng việc sử dụng nó chắc chắn sẽ khuyến khích sự phát triển
của các chương trình AWK sạch hơn. Với một đối số tùy chọn là không hợp lệ, chỉ cảnh báo về
những thứ thực sự không hợp lệ được ban hành. (Điều này chưa được triển khai đầy đủ.)

-M
--bignum
Buộc số học chính xác tùy ý trên các số. Tùy chọn này không có hiệu lực nếu chim ưng
không được biên dịch để sử dụng các thư viện GNU MPFR và MP.

-n
- dữ liệu không thập phân
Nhận biết các giá trị bát phân và thập lục phân trong dữ liệu đầu vào. Sử dụng điều này tùy chọn với tuyệt vời
thận trọng!

-N
--use-lc-số
Điều này buộc chim ưng để sử dụng ký tự dấu thập phân của ngôn ngữ khi phân tích cú pháp đầu vào
dữ liệu. Mặc dù tiêu chuẩn POSIX yêu cầu hành vi này và chim ưng làm như vậy khi
--posix có hiệu lực, mặc định là tuân theo hành vi truyền thống và sử dụng
dấu chấm ở dạng dấu thập phân, ngay cả ở các ngôn ngữ mà dấu chấm không phải là số thập phân
nhân vật điểm. Tùy chọn này ghi đè hành vi mặc định mà không có đầy đủ
sự nghiêm khắc hà khắc của --posix tùy chọn.

-o[hồ sơ]
- bản in rõ ràng[=hồ sơ]
Xuất ra một phiên bản in đẹp của chương trình để hồ sơ. Nếu không hồ sơ được cung cấp,
chim ưng sử dụng một tệp có tên awkprof.out trong thư mục hiện tại.

-O
--tối ưu hóa
Cho phép tối ưu hóa dựa trên đại diện bên trong của chương trình. Hiện tại,
điều này bao gồm việc gấp không đổi đơn giản và loại bỏ lệnh gọi đuôi để đệ quy
chức năng. Các chim ưng nhà bảo trì hy vọng sẽ thêm các tối ưu hóa bổ sung theo thời gian.

-p[hồ sơ]
--Hồ sơ[=hồ sơ]
Bắt đầu phiên lập hồ sơ và gửi dữ liệu hồ sơ đến hồ sơ. Mặc định
is awkprof.out. Hồ sơ chứa số lượng thực thi của mỗi câu lệnh trong
chương trình ở lề trái và số lần gọi hàm cho mỗi hàm do người dùng xác định.

-P
--posix
Điều này bật khả năng tương thích chế độ, với các hạn chế bổ sung sau:

· \x trình tự thoát không được công nhận.

· Chỉ dấu cách và tab hoạt động như dấu phân cách trường khi FS được đặt thành một không gian duy nhất,
dòng mới không.

· Bạn không thể tiếp tục các dòng sau ?:.

· Từ đồng nghĩa chức năng cho từ khóa chức năng Không được công nhận.

· Các nhà khai thác **** = không thể được sử dụng thay cho ^^=.

-r
- khoảng thời gian
Cho phép sử dụng khoảng thời gian biểu thức trong đối sánh biểu thức chính quy (xem Đều đặn
Biểu thức, phía dưới). Biểu thức khoảng thời gian theo truyền thống không có sẵn trong
Ngôn ngữ AWK. Tiêu chuẩn POSIX đã thêm chúng, để làm cho ôiví dụ phù hợp với
lẫn nhau. Chúng được bật theo mặc định, nhưng tùy chọn này vẫn được sử dụng với
--truyên thông.

-S
- hộp đựng
Chạy chim ưng ở chế độ hộp cát, vô hiệu hóa hệ thống () chức năng, chuyển hướng đầu vào với
theo hàng, chuyển hướng đầu ra với inprintfvà tải các tiện ích mở rộng động.
Thực thi lệnh (thông qua đường ống) cũng bị vô hiệu hóa. Điều này có hiệu quả chặn một
tập lệnh từ việc truy cập tài nguyên cục bộ (ngoại trừ các tệp được chỉ định trên
dòng lệnh).

-t
- già
Đưa ra cảnh báo về các cấu trúc không thể di chuyển đối với phiên bản gốc của
UNIX ôi.

-V
--phiên bản
In thông tin phiên bản cho bản sao cụ thể này của chim ưng trên đầu ra tiêu chuẩn.
Điều này chủ yếu hữu ích để biết liệu bản sao hiện tại của chim ưng trên hệ thống của bạn đã lên
cho đến nay đối với bất kỳ thứ gì mà Tổ chức Phần mềm Tự do đang phân phối.
Điều này cũng hữu ích khi báo cáo lỗi. (Theo GNU Lập trình Tiêu chuẩn, các
các tùy chọn gây ra một lối thoát ngay lập tức, thành công.)

-- Báo hiệu sự kết thúc của các tùy chọn. Điều này hữu ích để cho phép các đối số tiếp theo cho AWK
tự lập trình để bắt đầu bằng dấu “-”. Điều này cung cấp sự nhất quán với đối số
quy ước phân tích cú pháp được sử dụng bởi hầu hết các chương trình POSIX khác.

Trong chế độ tương thích, bất kỳ tùy chọn nào khác đều bị gắn cờ là không hợp lệ, nhưng ngược lại thì
làm ngơ. Trong hoạt động bình thường, miễn là văn bản chương trình đã được cung cấp, các tùy chọn không xác định
được chuyển sang chương trình AWK trong ARGV mảng để xử lý. Điều này đặc biệt
hữu ích để chạy các chương trình AWK qua “#!” cơ chế thông dịch thực thi.

Để tương thích với POSIX, -W tùy chọn có thể được sử dụng, theo sau là tên của một tùy chọn dài.

AWK CHƯƠNG TRÌNH CHẤP HÀNH


Một chương trình AWK bao gồm một chuỗi các câu lệnh hành động mẫu và chức năng tùy chọn
các định nghĩa.

@bao gồm "tên tập tin"
@trọng tải "tên tập tin"
Belt Hold { hoạt động báo cáo }
chức năng tên(tham số ) { báo cáo }

trố mắt lần đầu tiên đọc nguồn chương trình từ tập tin chương trình(các) nếu được chỉ định, từ các đối số
đến --nguồnhoặc từ đối số không phải tùy chọn đầu tiên trên dòng lệnh. Các -f
--nguồn các tùy chọn có thể được sử dụng nhiều lần trên dòng lệnh. trố mắt đọc chương trình
văn bản như thể tất cả tập tin chương trìnhs và văn bản nguồn dòng lệnh đã được nối với nhau
cùng với nhau. Điều này rất hữu ích cho việc xây dựng thư viện các hàm AWK mà không cần phải
đưa chúng vào mỗi chương trình AWK mới sử dụng chúng. Nó cũng cung cấp khả năng trộn
chức năng thư viện với các chương trình dòng lệnh.

Ngoài ra, các dòng bắt đầu bằng @bao gồm có thể được sử dụng để đưa các tệp nguồn khác vào
chương trình của bạn, làm cho việc sử dụng thư viện dễ dàng hơn. Điều này tương đương với việc sử dụng -i tùy chọn.

Các dòng bắt đầu bằng @trọng tải có thể được sử dụng để tải các thư viện được chia sẻ vào chương trình của bạn. Điều này
tương đương với việc sử dụng -l tùy chọn.

Biến môi trường AWKPATH chỉ định một đường dẫn tìm kiếm để sử dụng khi tìm các tệp nguồn
được đặt tên với -f-i tùy chọn. Nếu biến này không tồn tại, đường dẫn mặc định là
".: / usr / local / share / awk". (Thư mục thực tế có thể khác nhau, tùy thuộc vào cách chim ưng
được xây dựng và cài đặt.) Nếu tên tệp được cấp cho -f tùy chọn chứa ký tự “/”, không
tìm kiếm đường dẫn được thực hiện.

Biến môi trường AWKLIBPATH chỉ định một đường dẫn tìm kiếm để sử dụng khi tìm nguồn
các tệp được đặt tên với -l lựa chọn. Nếu biến này không tồn tại, đường dẫn mặc định là
"/ usr / local / lib / gawk". (Thư mục thực tế có thể khác nhau, tùy thuộc vào cách chim ưng đã được xây dựng
và được cài đặt.)

trố mắt thực thi các chương trình AWK theo thứ tự sau. Đầu tiên, tất cả các phép gán biến
được chỉ định thông qua -v tùy chọn được thực hiện. Kế tiếp, chim ưng biên dịch chương trình thành một
hình thức bên trong. Sau đó, chim ưng thực thi mã trong BEGIN (các) quy tắc (nếu có), và sau đó
tiến hành đọc từng tệp có tên trong ARGV mảng (lên đến ARGV [ARGC]). Nếu không có
các tệp có tên trên dòng lệnh, chim ưng đọc đầu vào tiêu chuẩn.

Nếu tên tệp trên dòng lệnh có dạng =val nó được coi như một biến
phân công. Biến sẽ được chỉ định giá trị val. (Điều này xảy ra sau bất kỳ
BEGIN (các) quy tắc đã được chạy.) Việc gán biến dòng lệnh hữu ích nhất cho
tự động gán giá trị cho các biến AWK sử dụng để kiểm soát cách đầu vào được chia thành
trường và bản ghi. Nó cũng hữu ích để kiểm soát trạng thái nếu cần nhiều lần chuyển
trên một tệp dữ liệu duy nhất.

Nếu giá trị của một phần tử cụ thể của ARGV trống rỗng (""), chim ưng bỏ qua nó.

Đối với mỗi tệp đầu vào, nếu BẮT ĐẦUTỆP quy tắc tồn tại, chim ưng thực thi mã liên quan trước đó
xử lý nội dung của tệp. Tương tự, chim ưng thực thi mã được liên kết với
KẾT THÚC sau khi xử lý tệp.

Đối với mỗi bản ghi trong đầu vào, chim ưng kiểm tra để xem nếu nó phù hợp với bất kỳ Belt Hold trong AWK
chương trình. Đối với mỗi mẫu mà bản ghi phù hợp, chim ưng thực hiện liên kết hoạt động.
Các mẫu được kiểm tra theo thứ tự xuất hiện trong chương trình.

Cuối cùng, sau khi tất cả đầu vào đã hết, chim ưng thực thi mã trong END (các) quy tắc (nếu
không tí nào).

Lệnh Dòng Danh Mục
Theo POSIX, các tệp có tên trên ôi dòng lệnh phải là tệp văn bản. Hành vi
là `` không xác định '' nếu chúng không phải là. Hầu hết các phiên bản của ôi xử lý một thư mục trên lệnh
dòng như một lỗi nghiêm trọng.

Bắt đầu với phiên bản 4.0 của chim ưng, một thư mục trên dòng lệnh tạo ra cảnh báo, nhưng
nếu không thì bị bỏ qua. Nếu một trong hai --posix or --truyên thông các tùy chọn được đưa ra, sau đó
chim ưng hoàn nguyên để coi các thư mục trên dòng lệnh là một lỗi nghiêm trọng.

BIẾN, HỒ SƠ LĨNH VỰC


Các biến AWK là động; chúng xuất hiện khi chúng được sử dụng lần đầu tiên. Của chúng
giá trị là số hoặc chuỗi dấu phẩy động hoặc cả hai, tùy thuộc vào cách chúng
được sử dụng. AWK cũng có mảng một chiều; mảng có nhiều kích thước có thể là
mô phỏng. trố mắt cung cấp các mảng đúng của mảng; Thấy chưa Mảng, phía dưới. Một số xác định trước
các biến được thiết lập như một chương trình chạy; những điều này được mô tả khi cần thiết và được tóm tắt dưới đây.

Hồ sơ
Thông thường, các bản ghi được phân tách bằng các ký tự dòng mới. Bạn có thể kiểm soát cách các bản ghi
được phân tách bằng cách gán giá trị cho biến tích hợp RS. Nếu RS là bất kỳ ký tự đơn lẻ nào,
ký tự đó phân tách các bản ghi. Nếu không thì, RS là một biểu thức chính quy. Văn bản trong
đầu vào khớp với biểu thức chính quy này sẽ phân tách bản ghi. Tuy nhiên, trong
chế độ tương thích, chỉ ký tự đầu tiên của giá trị chuỗi của nó được sử dụng để phân tách
Hồ sơ. Nếu như RS được đặt thành chuỗi rỗng, sau đó các bản ghi được phân tách bằng các dòng trống.
Thời Gian RS được đặt thành chuỗi null, ký tự dòng mới luôn hoạt động như một dấu phân cách trường,
ngoài bất kỳ giá trị nào FS có thể có.

Lĩnh vực
Khi mỗi bản ghi đầu vào được đọc, chim ưng tách hồ sơ thành các lĩnh vực, sử dụng giá trị của
FS biến làm dấu phân tách trường. Nếu như FS là một ký tự đơn, các trường được phân tách bằng
nhân vật đó. Nếu như FS là chuỗi null, sau đó mỗi ký tự riêng lẻ trở thành một
lĩnh vực riêng biệt. Nếu không thì, FS được mong đợi là một biểu thức chính quy đầy đủ. bên trong
trường hợp đặc biệt đó FS là một không gian duy nhất, các trường được phân tách bằng các khoảng trắng và / hoặc tab
và / hoặc dòng mới. (Nhưng hãy xem phần POSIX Tương thích, phía dưới). LƯU Ý: Giá trị của
BỎ QUA TRƯỜNG HỢP (xem bên dưới) cũng ảnh hưởng đến cách các trường được phân chia khi FS là một biểu thức chính quy,
và cách các bản ghi được tách ra khi RS là một biểu thức chính quy.

Nếu CHIỀU RỘNG LĨNH VỰC biến được đặt thành một danh sách số được phân tách bằng dấu cách, mỗi trường là
dự kiến ​​sẽ có chiều rộng cố định và chim ưng chia nhỏ bản ghi bằng cách sử dụng các độ rộng được chỉ định.
Giá trị của FS bị bỏ qua. Gán một giá trị mới cho FS or FPAT ghi đè việc sử dụng
CHIỀU RỘNG LĨNH VỰC.

Tương tự, nếu FPAT biến được đặt thành một chuỗi đại diện cho một biểu thức chính quy, mỗi
trường được tạo thành từ văn bản khớp với biểu thức chính quy đó. Trong trường hợp này,
biểu thức mô tả chính các trường, thay vì văn bản phân tách các trường.
Gán một giá trị mới cho FS or CHIỀU RỘNG LĨNH VỰC ghi đè việc sử dụng FPAT.

Mỗi trường trong bản ghi đầu vào có thể được tham chiếu theo vị trí của nó: $1, $2, Và như vậy. $0
là toàn bộ hồ sơ. Các trường không cần được tham chiếu bởi hằng số:

n = 5
in $n

in trường thứ năm trong bản ghi đầu vào.

Biến NF được đặt thành tổng số trường trong bản ghi đầu vào.

Tham chiếu đến các trường không tồn tại (tức là các trường sau $ NF) tạo ra chuỗi null.
Tuy nhiên, việc gán cho một trường không tồn tại (ví dụ: $ (NF + 2) = 5) làm tăng giá trị của NF,
tạo bất kỳ trường xen vào nào có chuỗi null làm giá trị của chúng và gây ra giá trị
of $0 được tính toán lại, với các trường được phân tách bằng giá trị của FSO. Người giới thiệu
sang các trường được đánh số âm sẽ gây ra lỗi nghiêm trọng. Đang giảm dần NF gây ra các giá trị của
các trường vượt quá giá trị mới sẽ bị mất và giá trị của $0 được tính toán lại, với
các trường được phân tách bằng giá trị của FSO.

Việc gán giá trị cho một trường hiện có khiến toàn bộ bản ghi được tạo lại khi $0 is
được tham chiếu. Tương tự, chỉ định một giá trị cho $0 khiến bản ghi được hồi sáng, tạo
giá trị mới cho các trường.

Built-in Biến
trố mắtCác biến tích hợp của là:

ARGC Số lượng đối số dòng lệnh (không bao gồm các tùy chọn chim ưng, Hoặc
nguồn chương trình).

ARGIND Chỉ mục trong ARGV của tệp hiện tại đang được xử lý.

ARGV Mảng đối số dòng lệnh. Mảng được lập chỉ mục từ 0 đến ARGC - 1.
Tự động thay đổi nội dung của ARGV có thể kiểm soát các tệp được sử dụng cho dữ liệu.

BINMODE Trên các hệ thống không phải POSIX, chỉ định sử dụng chế độ "nhị phân" cho tất cả các I / O tệp.
Các giá trị số của 1, 2 hoặc 3, chỉ định rằng các tệp đầu vào, tệp đầu ra hoặc tất cả
các tệp, tương ứng, nên sử dụng I / O nhị phân. Giá trị chuỗi của "NS", hoặc là "w"
chỉ định rằng các tệp đầu vào hoặc tệp đầu ra, tương ứng, nên sử dụng tệp nhị phân
I / O. Giá trị chuỗi của "rw" or "wr" chỉ định rằng tất cả các tệp phải sử dụng nhị phân
I / O. Bất kỳ giá trị chuỗi nào khác được coi là "rw", nhưng tạo ra một cảnh báo
thông điệp.

CONVFMT Định dạng chuyển đổi cho các số, "% .6g", theo mặc định.

MÔI TRƯỜNG Một mảng chứa các giá trị của môi trường hiện tại. Mảng là
được lập chỉ mục bởi các biến môi trường, mỗi phần tử là giá trị của
biến (ví dụ: ENVIRON ["HOME"] có thể là "/ home / arnold"). Thay đổi mảng này
không ảnh hưởng đến môi trường được nhìn thấy bởi các chương trình chim ưng sinh sản qua
chuyển hướng hoặc hệ thống () chức năng.

LỖI Nếu xảy ra lỗi hệ thống, hoặc thực hiện chuyển hướng cho theo hàng, trong khi đọc
cho theo hàng, hoặc trong một đóng()thì LỖI sẽ chứa một chuỗi mô tả
lỗi. Giá trị có thể được dịch sang các ngôn ngữ không phải tiếng Anh.

CHIỀU RỘNG LĨNH VỰC Danh sách độ rộng trường được phân tách bằng khoảng trắng. Khi thiết lập, chim ưng phân tích cú pháp đầu vào
vào các trường có chiều rộng cố định, thay vì sử dụng giá trị của FS biến như
dấu tách trường. Nhìn thấy Lĩnh vực, ở trên.

TÊN TỆP Tên của tệp đầu vào hiện tại. Nếu không có tệp nào được chỉ định trên lệnh
dòng, giá trị của TÊN TỆP Là "-". Tuy nhiên, TÊN TỆP không được xác định bên trong
BEGIN quy tắc (trừ khi được đặt bởi theo hàng).

FNR Số bản ghi đầu vào trong tệp đầu vào hiện tại.

FPAT Một biểu thức chính quy mô tả nội dung của các trường trong một bản ghi. Khi nào
bộ, chim ưng phân tích cú pháp đầu vào thành các trường, trong đó các trường khớp với
biểu thức, thay vì sử dụng giá trị của FS biến dưới dạng trường
dải phân cách. Nhìn thấy Lĩnh vực, ở trên.

FS Dấu phân cách trường đầu vào, một khoảng trắng theo mặc định. Nhìn thấy Lĩnh vực, ở trên.

BẢNG CHỨC NĂNG Một mảng có các chỉ số và giá trị tương ứng là tên của tất cả người dùng-
các chức năng được định nghĩa hoặc mở rộng trong chương trình. LƯU Ý: Bạn không thể sử dụng
xóa tuyên bố với BẢNG CHỨC NĂNG mảng.

BỎ QUA TRƯỜNG HỢP Kiểm soát độ phân biệt chữ hoa chữ thường của tất cả các hoạt động chuỗi và biểu thức chính quy.
If BỎ QUA TRƯỜNG HỢP có giá trị khác XNUMX, sau đó so sánh chuỗi và mẫu
phù hợp trong các quy tắc, tách trường với FSFPAT, tách hồ sơ với
RS, kết hợp biểu thức chính quy với ~!~, và gensub (), gsub (),
mục lục(), trận đấu(), patsplit (), tách ()phụ () các chức năng tích hợp đều bỏ qua
trường hợp khi thực hiện các phép toán biểu thức chính quy. LƯU Ý: Đăng ký mảng mới là
không bị ảnh hưởng. Tuy nhiên, một loại()asorti () các chức năng bị ảnh hưởng.
Do đó, nếu BỎ QUA TRƯỜNG HỢP không bằng XNUMX, / aB / khớp với tất cả các chuỗi
"ab", "aB", "Ab""AB". Như với tất cả các biến AWK, giá trị ban đầu của
BỎ QUA TRƯỜNG HỢP bằng XNUMX, vì vậy tất cả các hoạt động biểu thức chính quy và chuỗi là
thường phân biệt chữ hoa chữ thường.

LINT Cung cấp khả năng kiểm soát động của --lint tùy chọn từ bên trong chương trình AWK.
Khi đúng, chim ưng in cảnh báo xơ vải. Khi sai, nó không. Khi được giao
giá trị chuỗi "gây tử vong", cảnh báo xơ vải trở thành lỗi nghiêm trọng, giống hệt như
--lint = gây tử vong. Bất kỳ giá trị thực nào khác chỉ in cảnh báo.

NF Số trường trong bản ghi đầu vào hiện tại.

NR Tổng số bản ghi đầu vào được nhìn thấy cho đến nay.

OFMT Định dạng đầu ra cho các số, "% .6g", theo mặc định.

FSO Dấu phân tách trường đầu ra, một khoảng trắng theo mặc định.

ORS gia hạn Dấu phân tách bản ghi đầu ra, theo mặc định là một dòng mới.

TRƯỚC Độ chính xác làm việc của các số dấu phẩy động chính xác tùy ý, 53 x
mặc định.

THỦ TỤC Các phần tử của mảng này cung cấp quyền truy cập vào thông tin về AWK đang chạy
chương trình. Trên một số hệ thống, có thể có các phần tử trong mảng, "nhóm 1"
thông qua "tập đoànn" cho một số n, là số lượng các nhóm bổ sung
quy trình có. Sử dụng in toán tử để kiểm tra các yếu tố này. Các
các yếu tố sau được đảm bảo có sẵn:

PROCINFO ["egid"] Giá trị của cáu kỉnh(2) cuộc gọi hệ thống.

PROCINFO ["strftime"]
Chuỗi định dạng thời gian mặc định cho strftime ().

PROCINFO ["euid"] Giá trị của người lém lỉnh(2) cuộc gọi hệ thống.

PROCINFO ["FS"] "FS" nếu trường tách với FS có hiệu lực, "FPAT" if
tách lĩnh vực với FPAT có hiệu lực, hoặc "FIELDWIDTHS"
nếu trường tách với CHIỀU RỘNG LĨNH VỰC đang có hiệu lực.

PROCINFO ["số nhận dạng"]
Một mảng con, được lập chỉ mục bởi tên của tất cả các số nhận dạng được sử dụng
trong văn bản của chương trình AWK. Các giá trị cho biết những gì
chim ưng biết về các số nhận dạng sau khi hoàn thành
phân tích cú pháp chương trình; họ đang không cập nhật trong khi
chương trình chạy. Đối với mỗi mã định danh, giá trị của
phần tử là một trong những phần sau:

"mảng"
Định danh là một mảng.

"được xây dựng trong"
Định danh là một chức năng được tích hợp sẵn.

"sự mở rộng"
Số nhận dạng là một chức năng mở rộng được tải qua
@trọng tải or -l.

"vô hướng"
Định danh là một đại lượng vô hướng.

"chưa định hình"
Mã định danh không được định kiểu (có thể được sử dụng như một
vô hướng hoặc mảng, chim ưng chưa biết).

"người sử dụng" Định danh là một chức năng do người dùng xác định.

PROCINFO ["gid"] Giá trị của người ngoan cố(2) cuộc gọi hệ thống.

PROCINFO ["pgrpid"] ID nhóm quy trình của quy trình hiện tại.

PROCINFO ["pid"] ID quy trình của quy trình hiện tại.

PROCINFO ["ppid"] ID quy trình mẹ của quy trình hiện tại.

PROCINFO ["uid"] Giá trị của giúp đỡ(2) cuộc gọi hệ thống.

PROCINFO ["sorted_in"]
Nếu phần tử này tồn tại trong THỦ TỤC, sau đó giá trị của nó
kiểm soát thứ tự mà các phần tử mảng được duyệt qua
in cho các vòng lặp. Các giá trị được hỗ trợ là "@ind_str_asc",
"@ind_num_asc", "@val_type_asc", "@val_str_asc",
"@val_num_asc", "@ind_str_desc", "@ind_num_desc",
"@val_type_desc", "@val_str_desc", "@val_num_desc"
"@unsorted". Giá trị cũng có thể là tên của bất kỳ
hàm so sánh được định nghĩa như sau:

chức năng cmp_func (i1, v1, i2 v2)

Ở đâu i1i2 là các chỉ số, và v1v2
giá trị tương ứng của hai phần tử được so sánh.
Nó phải trả về một số nhỏ hơn, bằng hoặc lớn hơn
hơn 0, tùy thuộc vào cách các phần tử của mảng
Được ra lệnh.

PROCINFO ["đầu vào", "GIỜ ĐỌC ĐÃ KẾT THÚC"]
Thời gian chờ tính bằng mili giây để đọc dữ liệu từ đầu vào,
Ở đâu đầu vào là một chuỗi chuyển hướng hoặc một tên tệp. Một giá trị
bằng XNUMX hoặc nhỏ hơn XNUMX có nghĩa là không có thời gian chờ.

PROCINFO ["mpfr_version"]
Phiên bản của thư viện GNU MPFR được sử dụng tùy ý
hỗ trợ số chính xác trong chim ưng. Mục nhập này không phải là
trình bày nếu hỗ trợ MPFR không được biên dịch thành chim ưng.

PROCINFO ["gmp_version"]
Phiên bản của thư viện GNU MP được sử dụng tùy ý
hỗ trợ số chính xác trong chim ưng. Mục nhập này không phải là
trình bày nếu hỗ trợ MPFR không được biên dịch thành chim ưng.

PROCINFO ["Pre_max"]
Độ chính xác tối đa được hỗ trợ bởi thư viện GNU MPFR
cho các số dấu phẩy động chính xác tùy ý. Điều này
mục nhập không có nếu hỗ trợ MPFR không được biên dịch thành
chim ưng.

PROCINFO ["Pre_min"]
Độ chính xác tối thiểu được cho phép bởi thư viện GNU MPFR đối với
số dấu phẩy động chính xác tùy ý. Mục nhập này là
không có mặt nếu hỗ trợ MPFR không được biên dịch thành chim ưng.

PROCINFO ["api_major"]
Phiên bản chính của API tiện ích mở rộng. Mục nhập này không phải là
trình bày nếu tải các tiện ích mở rộng động không khả dụng.

PROCINFO ["api_minor"]
Phiên bản nhỏ của API tiện ích mở rộng. Mục nhập này không phải là
trình bày nếu tải các tiện ích mở rộng động không khả dụng.

PROCINFO ["phiên bản"] phiên bản của chim ưng.

CHẾ ĐỘ TRÒN Chế độ làm tròn để sử dụng cho số học chính xác tùy ý trên các số, bằng
mặc định "N" (Chế độ IEEE-754 roundTiesToEven). Các giá trị được chấp nhận là "N" or
"n" cho roundTiesToEven, "HOẶC LÀ" or "u" cho roundTowardPositive, "D" or "d" cho
vòngHướng tớiTiêu cực, "Z" or "z" cho roundTowardZero và nếu phiên bản của bạn
Thư viện GNU MPFR hỗ trợ nó, "Một" or "a" cho roundTiesToAway.

RS Dấu phân tách bản ghi đầu vào, theo mặc định là một dòng mới.

RT Trình kết thúc bản ghi. trố mắt bộ RT với văn bản đầu vào phù hợp với
ký tự hoặc biểu thức chính quy được chỉ định bởi RS.

BẮT ĐẦU LẠI Chỉ mục của ký tự đầu tiên được so khớp bởi trận đấu(); 0 nếu không khớp. (Điều này
ngụ ý rằng các chỉ số ký tự bắt đầu từ một.)

CHIỀU DÀI Chiều dài của chuỗi được so khớp bởi trận đấu(); -1 nếu không khớp.

BÊN DƯỚI Ký tự được sử dụng để phân tách nhiều chỉ số con trong các phần tử mảng, bằng cách
mặc định "\ 034".

HỘI CHỨNG Một mảng có các chỉ số là tên của tất cả các biến toàn cầu hiện được xác định
và các mảng trong chương trình. Mảng có thể được sử dụng để truy cập gián tiếp để đọc
hoặc viết giá trị của một biến:

foo = 5
SYMTAB ["foo"] = 4
in foo # in 4

Sản phẩm isarray () hàm có thể được sử dụng để kiểm tra xem một phần tử trong HỘI CHỨNG là một
mảng. Bạn không thể sử dụng xóa tuyên bố với HỘI CHỨNG mảng.

TÊN VĂN BẢN Miền văn bản của chương trình AWK; được sử dụng để tìm các bản dịch được bản địa hóa
cho các chuỗi của chương trình.

Mảng
Mảng được ký hiệu bằng một biểu thức giữa dấu ngoặc vuông ([]). Nếu
biểu thức là một danh sách biểu thức (thể hiện, thể hiện ...) thì chỉ số con của mảng là một chuỗi
bao gồm phần nối giá trị (chuỗi) của mỗi biểu thức, được phân tách bằng dấu
giá trị của BÊN DƯỚI Biến đổi. Cơ sở này được sử dụng để mô phỏng nhân kích thước
mảng. Ví dụ:

i = "MỘT"; j = "B"; k = "C"
x [i, j, k] = "xin chào, thế giới \ n "

gán chuỗi "xin chào, thế giới \ n " đến phần tử của mảng x được lập chỉ mục bởi
chuỗi "A \ 034B \ 034C". Tất cả các mảng trong AWK là liên kết, tức là, được lập chỉ mục bởi các giá trị chuỗi.

Nhà điều hành đặc biệt in có thể được sử dụng để kiểm tra xem một mảng có chỉ mục bao gồm
giá trị cụ thể:

if (giá trị in mảng)
in mảng [val]

Nếu mảng có nhiều chỉ số con, hãy sử dụng (tôi, j) in mảng.

Sản phẩm in cấu trúc cũng có thể được sử dụng trong một cho vòng lặp để lặp lại trên tất cả các phần tử của một
mảng. Tuy nhiên, (tôi, j) in mảng cấu trúc chỉ hoạt động trong các thử nghiệm, không hoạt động trong cho các vòng lặp.

Một phần tử có thể bị xóa khỏi một mảng bằng cách sử dụng xóa tuyên bố. Các xóa tuyên bố
cũng có thể được sử dụng để xóa toàn bộ nội dung của một mảng, chỉ bằng cách chỉ định mảng
tên mà không có chỉ số dưới.

chim ưng hỗ trợ mảng đa chiều thực sự. Nó không yêu cầu các mảng như vậy phải
`` hình chữ nhật '' như trong C hoặc C ++. Ví dụ:

một [1] = 5
a [2] [1] = 6
a [2] [2] = 7

LƯU Ý: Bạn có thể cần phải nói chim ưng rằng một phần tử mảng thực sự là một mảng con để sử dụng
nó ở đâu chim ưng mong đợi một mảng (chẳng hạn như trong đối số thứ hai để tách ()). Bạn có thể làm
điều này bằng cách tạo một phần tử trong mảng con và sau đó xóa nó bằng xóa
tuyên bố.

Biến Chuyển đổi
Các biến và trường có thể là số (dấu phẩy động) hoặc chuỗi hoặc cả hai. Giá trị như thế nào
của một biến được hiểu phụ thuộc vào ngữ cảnh của nó. Nếu được sử dụng trong một biểu thức số,
nó sẽ được coi là một con số; nếu được sử dụng như một chuỗi, nó sẽ được coi là một chuỗi.

Để buộc một biến được coi là một số, hãy thêm 0 vào nó; buộc nó phải được coi như một
chuỗi, nối nó với chuỗi null.

Các biến chưa được khởi tạo có giá trị số 0 và giá trị chuỗi "" (giá trị rỗng, hoặc
rỗng, chuỗi).

Khi một chuỗi phải được chuyển đổi thành một số, quá trình chuyển đổi được thực hiện bằng cách sử dụng
sải bước(3). Một số được chuyển đổi thành một chuỗi bằng cách sử dụng giá trị của CONVFMT như một định dạng
chuỗi cho chạy nước rút(3), với giá trị số của biến làm đối số. Tuy nhiên,
mặc dù tất cả các số trong AWK đều là dấu phẩy động, các giá trị tích phân là luôn luôn chuyển đổi thành
số nguyên. Như vậy, đã cho

CONVFMT = "% 2.2f"
a = 12
b = a ""

biến b có giá trị chuỗi là "12" và không "12.00".

LƯU Ý: Khi hoạt động ở chế độ POSIX (chẳng hạn như với --posix tùy chọn), hãy cẩn thận với ngôn ngữ đó
cài đặt có thể ảnh hưởng đến cách xử lý số thập phân: dấu phân cách thập phân của
những con số bạn đang cho ăn chim ưng phải phù hợp với những gì ngôn ngữ của bạn mong đợi, có thể là
dấu phẩy (,) hoặc dấu chấm (.).

trố mắt thực hiện các phép so sánh như sau: Nếu hai biến là số, chúng được so sánh
về mặt số học. Nếu một giá trị là số và giá trị kia có giá trị chuỗi là “số
string, ”sau đó các phép so sánh cũng được thực hiện bằng số. Nếu không, giá trị số là
được chuyển đổi thành một chuỗi và một phép so sánh chuỗi được thực hiện. Hai chuỗi được so sánh, của
nhiên, dưới dạng chuỗi.

Lưu ý rằng các hằng số chuỗi, chẳng hạn như "57", là không chuỗi số, chúng là chuỗi
các hằng số. Ý tưởng về "chuỗi số" chỉ áp dụng cho các trường, theo hàng đầu vào, TÊN TỆP,
ARGV các yếu tố, MÔI TRƯỜNG các phần tử và các phần tử của một mảng được tạo bởi tách () or
patsplit () đó là các chuỗi số. Ý tưởng cơ bản là người sử dụng đầu vàovà người dùng duy nhất
đầu vào, có dạng số, nên được xử lý theo cách đó.

Octal Hexadecimal Hằng số
Bạn có thể sử dụng hằng số bát phân và thập lục phân kiểu C trong mã nguồn chương trình AWK của mình. Vì
ví dụ, giá trị bát phân 011 bằng số thập phân 9và giá trị thập lục phân 0x11 is
bằng số thập phân 17.

Chuỗi Hằng số
Hằng số chuỗi trong AWK là chuỗi ký tự nằm giữa dấu ngoặc kép (như
"giá trị"). Trong chuỗi, nhất định thoát trình tự được công nhận, như trong C. Đây là:

\\ Một dấu gạch chéo ngược theo nghĩa đen.

\a Ký tự "cảnh báo"; thường là ký tự ASCII BEL.

\b Xóa lùi.

\f Thức ăn dạng.

\n Dòng mới.

\r Vận chuyển trở lại.

\t Tab ngang.

\v Tab dọc.

\xhex chữ số
Ký tự được biểu thị bằng chuỗi các chữ số thập lục phân theo sau \x. Các
trong ISO C, tất cả các chữ số thập lục phân sau đây đều được coi là một phần của lối thoát
sự nối tiếp. (Tính năng này sẽ cho chúng tôi biết điều gì đó về thiết kế ngôn ngữ bằng cách
ủy ban.) Ví dụ: "\ x1B" là ký tự ASCII ESC (thoát).

\ddd Ký tự được biểu thị bằng dãy chữ số bát phân 1, 2- hoặc 3 chữ số. Ví dụ,
"\ 033" là ký tự ASCII ESC (thoát).

\c Ký tự chữ c.

Các chuỗi thoát cũng có thể được sử dụng bên trong các biểu thức chính quy không đổi (ví dụ:
/[ \ t \ f \ n \ r \ v] / khớp với các ký tự khoảng trắng).

Trong chế độ tương thích, các ký tự được biểu thị bằng thoát bát phân và thập lục phân
trình tự được xử lý theo nghĩa đen khi được sử dụng trong hằng số biểu thức chính quy. Vì vậy, / a \ 52b /
tương đương với / a \ * b /.

THỰC TRẠNG HÀNH ĐỘNG


AWK là một ngôn ngữ hướng dòng. Mô hình có trước, sau đó là hành động. Hoạt động
tuyên bố được bao gồm trong {}. Mẫu có thể bị thiếu hoặc hành động có thể
bị thiếu, nhưng, tất nhiên, không phải cả hai. Nếu mẫu bị thiếu, hành động sẽ được thực thi
cho mọi bản ghi đầu vào. Một hành động bị thiếu tương đương với

{ in }

mà sẽ in toàn bộ bản ghi.

Nhận xét bắt đầu bằng # và tiếp tục cho đến cuối dòng. Dòng trống
có thể được sử dụng để phân tách các câu lệnh. Thông thường, một câu lệnh kết thúc bằng một dòng mới, tuy nhiên,
đây không phải là trường hợp của các dòng kết thúc bằng dấu phẩy, {, ?, :, &&, hoặc là ||. Các dòng kết thúc bằng do
or khác cũng có các câu lệnh của họ tự động tiếp tục ở dòng sau. Trong
các trường hợp khác, một dòng có thể được tiếp tục bằng cách kết thúc nó bằng dấu “\”, trong trường hợp đó, dòng mới là
mặc kệ.

Nhiều câu lệnh có thể được đặt trên một dòng bằng cách phân tách chúng bằng dấu “;”. Điều này áp dụng cho
cả các câu lệnh trong phần hành động của cặp hành động mẫu (trường hợp thông thường) và
cho chính các câu lệnh hành động mẫu.

Patterns
Các mẫu AWK có thể là một trong những dạng sau:

BEGIN
END
BẮT ĐẦUTỆP
KẾT THÚC
/đều đặn biểu hiện/
quan hệ biểu hiện
Belt Hold && Belt Hold
Belt Hold || Belt Hold
Belt Hold ? Belt Hold : Belt Hold
(Belt Hold)
! Belt Hold
mẫu1, mẫu2

BEGINEND là hai loại mẫu đặc biệt không được kiểm tra so với đầu vào.
Các phần hành động của tất cả BEGIN các mẫu được hợp nhất như thể tất cả các câu lệnh đã được
được viết trong một đơn BEGIN qui định. Chúng được thực thi trước khi bất kỳ đầu vào nào được đọc.
Tương tự, tất cả END các quy tắc được hợp nhất và được thực thi khi hết tất cả dữ liệu đầu vào (hoặc
khi một ra câu lệnh được thực thi). BEGINEND các mẫu không thể kết hợp với các mẫu khác
các mẫu trong biểu thức mẫu. BEGINEND các mẫu không thể thiếu các phần hành động.

BẮT ĐẦUTỆPKẾT THÚC là các mẫu đặc biệt bổ sung có phần thân được thực thi trước đó
đọc bản ghi đầu tiên của mỗi tệp đầu vào dòng lệnh và sau khi đọc bản ghi cuối cùng
của mỗi tệp. Bên trong BẮT ĐẦUTỆP quy tắc, giá trị của LỖI sẽ là chuỗi trống nếu
tệp đã được mở thành công. Nếu không, có một số vấn đề với tệp và
mã nên sử dụng tập tin tiếp theo để bỏ qua nó. Nếu điều đó không được thực hiện, chim ưng tạo ra cái chết thông thường của nó
lỗi đối với các tệp không thể mở được.

Trong /đều đặn biểu hiện/ các mẫu, câu lệnh liên quan được thực thi cho mỗi đầu vào
bản ghi phù hợp với biểu thức chính quy. Biểu thức chính quy giống với những biểu thức trong
ví dụ(1), và được tóm tắt dưới đây.

A quan hệ biểu hiện có thể sử dụng bất kỳ toán tử nào được định nghĩa bên dưới trong phần trên
các hành động. Những điều này thường kiểm tra xem các trường nhất định có khớp với một số cụm từ thông dụng nhất định hay không.

Sản phẩm &&, ||! các toán tử logic AND, logic OR, và logic NOT, tương ứng,
như trong C. Chúng đánh giá ngắn mạch, cũng như trong C, và được sử dụng để kết hợp thêm
các biểu thức mẫu nguyên thủy. Như trong hầu hết các ngôn ngữ, dấu ngoặc đơn có thể được sử dụng để thay đổi
thứ tự đánh giá.

Sản phẩm ?: toán tử giống như toán tử tương tự trong C. Nếu mẫu đầu tiên là đúng thì
mẫu được sử dụng để thử nghiệm là mẫu thứ hai, nếu không nó là mẫu thứ ba. Chỉ một trong số
mẫu thứ hai và thứ ba được đánh giá.

Sản phẩm mẫu1, mẫu2 dạng của một biểu thức được gọi là phạm vi Belt Hold. Nó phù hợp với tất cả
bản ghi đầu vào bắt đầu bằng bản ghi phù hợp mẫu1và tiếp tục cho đến khi có bản ghi
phù hợp với mẫu2, bao gồm. Nó không kết hợp với bất kỳ kiểu mẫu nào khác
biểu hiện.

Đều đặn Biểu thức
Biểu thức chính quy là loại mở rộng được tìm thấy trong ví dụ. Chúng bao gồm các ký tự
như sau:

c Đối sánh với không phải siêu ký tự c.

\c Khớp với ký tự chữ c.

. Khớp với bất kỳ ký tự nào kể cả dòng mới.

^ Khớp với phần đầu của một chuỗi.

$ Khớp với phần cuối của một chuỗi.

[abc ...] Danh sách ký tự: khớp với bất kỳ ký tự nào abc .... Bạn có thể bao gồm một
phạm vi ký tự bằng cách tách chúng bằng dấu gạch ngang.

[^abc ...] Danh sách ký tự bị phủ định: khớp với bất kỳ ký tự nào ngoại trừ abc ....

r1|r2 Thay thế: phù hợp với một trong hai r1 or r2.

r1r2 Kết nối: trận đấu r1, và sau đó r2.

r+ Đối sánh một hoặc nhiều r'S.

r* Đối sánh XNUMX hoặc nhiều hơn r'S.

r? Đối sánh không hoặc một r'S.

(r) Phân nhóm: các trận đấu r.

r{n}
r{n,}
r{n,m} Một hoặc hai số bên trong dấu ngoặc nhọn biểu thị một khoảng thời gian biểu hiện. Nếu đó là
một số trong dấu ngoặc nhọn, biểu thức chính quy đứng trước r được lặp lại n
lần. Nếu có hai số được phân tách bằng dấu phẩy, r được lặp lại n đến m
lần. Nếu có một số được theo sau bởi dấu phẩy, thì r được lặp lại ít nhất
n lần.

\y Khớp với chuỗi trống ở đầu hoặc cuối từ.

\B Khớp với chuỗi trống trong một từ.

\< Khớp với chuỗi trống ở đầu một từ.

\> Khớp với chuỗi trống ở cuối một từ.

\s Khớp với bất kỳ ký tự khoảng trắng nào.

\S Khớp với bất kỳ ký tự không có khoảng trắng nào.

\w Khớp với bất kỳ ký tự cấu thành từ nào (chữ cái, chữ số hoặc dấu gạch dưới).

\W Khớp với bất kỳ ký tự nào không phải là từ cấu thành.

\` So khớp chuỗi trống ở đầu bộ đệm (chuỗi).

\' Khớp với chuỗi trống ở cuối vùng đệm.

Các chuỗi thoát hợp lệ trong hằng số chuỗi (xem Chuỗi Hằng số) cũng
hợp lệ trong biểu thức chính quy.

Nhân vật các lớp học là một tính năng được giới thiệu trong tiêu chuẩn POSIX. Một lớp ký tự là một
ký hiệu đặc biệt để mô tả danh sách các ký tự có một thuộc tính cụ thể, nhưng
trong đó bản thân các nhân vật thực tế có thể khác nhau giữa các quốc gia và / hoặc từ
bộ ký tự thành bộ ký tự. Ví dụ, khái niệm về bảng chữ cái là gì
nhân vật khác nhau ở Hoa Kỳ và ở Pháp.

Một lớp ký tự chỉ hợp lệ trong một biểu thức chính quy trong dấu ngoặc của một ký tự
danh sách. Các lớp nhân vật bao gồm [:, một từ khóa biểu thị lớp, và :]. Các
các lớp ký tự được xác định bởi tiêu chuẩn POSIX là:

[: alnum:] Ký tự chữ và số.

[: alpha:] Ký tự chữ cái.

[:chỗ trống:] Dấu cách hoặc ký tự tab.

[: cntrl:] Các ký tự điều khiển.

[: chữ số:] Các ký tự số.

[: graph:] Các ký tự có thể in và hiển thị. (Dấu cách có thể in được, nhưng không
hiển thị, trong khi một a là cả hai.)

[:thấp hơn:] Các ký tự chữ cái viết thường.

[:in:] Các ký tự có thể in được (các ký tự không phải là ký tự điều khiển.)

[: câu:] Ký tự dấu câu (ký tự không phải là chữ cái, chữ số, điều khiển
ký tự hoặc ký tự khoảng trắng).

[:không gian:] Ký tự khoảng trắng (chẳng hạn như dấu cách, tab và nguồn cấp dữ liệu định dạng, cho một vài ký tự).

[:phía trên:] Ký tự chữ cái viết hoa.

[: xdigit:] Các ký tự là chữ số thập lục phân.

Ví dụ: trước tiêu chuẩn POSIX, để khớp các ký tự chữ và số, bạn sẽ có
phải viết / [A-Za-z0-9] /. Nếu bộ ký tự của bạn có các ký tự chữ cái khác trong đó,
điều này sẽ không khớp với chúng và nếu bộ ký tự của bạn được đối chiếu khác với ASCII, thì điều này
thậm chí có thể không khớp với các ký tự chữ và số ASCII. Với các lớp ký tự POSIX,
bạn có thể viết / [[: alnum:]] /và điều này khớp với các ký tự chữ cái và số trong
bộ ký tự của bạn, bất kể nó là gì.

Hai chuỗi đặc biệt bổ sung có thể xuất hiện trong danh sách ký tự. Những điều này áp dụng cho không phải ASCII
bộ ký tự, có thể có các ký hiệu đơn lẻ (được gọi là đối chiếu các yếu tố) đó là
được đại diện bằng nhiều ký tự, cũng như một số ký tự được
tương đương với đối chiếu, hoặc phân loại, mục đích. (Ví dụ: trong tiếng Pháp, một chữ "e" đơn giản và một
tương đương với dấu "` ".)

Đối chiếu ký hiệu
Một biểu tượng đối chiếu là một phần tử đối chiếu nhiều ký tự được bao gồm trong [..].
Ví dụ, nếu ch là một phần tử đối chiếu, sau đó [[.ch.]] là một biểu thức chính quy
khớp với phần tử đối chiếu này, trong khi [ch] là một biểu thức chính quy
phù hợp với một trong hai c or h.

Các lớp tương đương
Một lớp tương đương là tên theo ngôn ngữ cụ thể cho danh sách các ký tự
tương đương. Tên được bao gồm trong [==]. Ví dụ, tên e có thể là
được sử dụng để đại diện cho tất cả “e,” “´,” và “`. ” Trong trường hợp này, [[= e =]] là một thường xuyên
biểu thức phù hợp với bất kỳ e, e, hoặc là e`.

Những tính năng này rất có giá trị ở các ngôn ngữ không nói tiếng Anh. Các chức năng của thư viện
việc này chim ưng sử dụng cho đối sánh cụm từ thông dụng hiện chỉ nhận dạng được ký tự POSIX
các lớp học; chúng không nhận ra các ký hiệu đối chiếu hoặc các lớp tương đương.

Sản phẩm \y, \B, \<, \>, \s, \S, \w, \W, \`\' toán tử cụ thể cho chim ưng; họ đang
phần mở rộng dựa trên cơ sở trong thư viện biểu thức chính quy GNU.

Các tùy chọn dòng lệnh khác nhau kiểm soát cách thức chim ưng giải thích các ký tự trong thông thường
biểu thức.

Không có lựa chọn
Trong trường hợp mặc định, chim ưng cung cấp tất cả các tiện ích của biểu thức chính quy POSIX
và các toán tử biểu thức chính quy GNU được mô tả ở trên.

--posix
Chỉ hỗ trợ các biểu thức chính quy POSIX, các toán tử GNU không phải là đặc biệt.
(Ví dụ, \w khớp với một nghĩa đen w).

--truyên thông
UNIX truyền thống ôi biểu thức chính quy được so khớp. Các toán tử GNU không
đặc biệt và biểu thức khoảng không có sẵn. Các ký tự được mô tả bằng hệ bát phân
và chuỗi thoát thập lục phân được xử lý theo nghĩa đen, ngay cả khi chúng đại diện cho
siêu ký tự biểu thức chính quy.

- khoảng thời gian
Cho phép biểu thức khoảng thời gian trong biểu thức chính quy, ngay cả khi --truyên thông đã
được cung cấp.

Hoạt động
Các câu lệnh hành động được đặt trong dấu ngoặc nhọn, {}. Các tuyên bố hành động bao gồm các
các câu lệnh gán, điều kiện và lặp được tìm thấy trong hầu hết các ngôn ngữ. Các nhà điều hành,
các câu lệnh điều khiển và các câu lệnh đầu vào / đầu ra có sẵn được tạo mẫu sau các câu lệnh trong C.

Các nhà khai thác
Các toán tử trong AWK, theo thứ tự ưu tiên giảm dần, là:

(hữu ích. Cảm ơn !) Nhóm

$ Tham khảo thực địa.

++ -- Tăng và giảm, cả tiền tố và hậu tố.

^ Luỹ thừa (** cũng có thể được sử dụng, và ** = cho toán tử gán).

+ - ! Cộng một bậc, trừ một bậc và phủ định logic.

* / % Phép nhân, phép chia và môđun.

+ - Cộng và trừ.

không gian Nối chuỗi.

| |& Piped I / O cho theo hàng, inprintf.

< > <= >= != ==
Các toán tử quan hệ thông thường.

~ !~ Đối sánh cụm từ thông dụng, đối sánh phủ định. LƯU Ý: Không sử dụng thường xuyên liên tục
biểu hiện (/ foo /) ở phía bên trái của một ~ or !~. Chỉ sử dụng một trên
bên tay phải. Cách diễn đạt / foo / ~ exp có cùng nghĩa với (($ 0 ~
/ foo /) ~ exp). Điều này thường là không những gì bạn muốn.

in Thành viên của mảng.

&& Logic AND.

|| Logic HOẶC.

?: Biểu thức điều kiện C. Cái này có dạng expr1 ? expr2 : expr3. Nếu
expr1 là đúng, giá trị của biểu thức là expr2, nếu không thì nó là expr3.
Chỉ một trong số expr2expr3 được đánh giá.

= += -= *= /= %= ^=
Phân công. Cả hai nhiệm vụ tuyệt đối ( = giá trị) và chỉ định nhà điều hành
(các hình thức khác) được hỗ trợ.

Kiểm soát Báo cáo
Các câu lệnh kiểm soát như sau:

if (điều kiện) tuyên bố [ khác tuyên bố ]
trong khi (điều kiện) tuyên bố
do tuyên bố trong khi (điều kiện)
cho (expr1; expr2; expr3) tuyên bố
cho ( in mảng) tuyên bố
phá vỡ
tiếp tục
xóa mảng[chỉ số]
xóa mảng
ra [ biểu hiện ]
{ báo cáo }
chuyển đổi (biểu hiện) {
trường hợp giá trị|biểu thức chính quy : tuyên bố
hữu ích. Cảm ơn !
[ mặc định: tuyên bố ]
}

I / O Báo cáo
Các câu lệnh đầu vào / đầu ra như sau:

gần(hồ sơ [, làm thế nào]) Đóng tệp, đường dẫn hoặc đồng xử lý. Tùy chọn làm thế nào chỉ nên là
được sử dụng khi đóng một đầu của đường ống hai chiều vào một quy trình đồng. Nó
phải là một giá trị chuỗi "đến" or "từ".

theo hàng Thiết lập $0 từ bản ghi đầu vào tiếp theo; bộ NF, NR, FNR, RT.

theo hàng <hồ sơ Thiết lập $0 từ bản ghi tiếp theo của hồ sơ; đặt NF, RT.

theo hàng Thiết lập từ bản ghi đầu vào tiếp theo; bộ NR, FNR, RT.

theo hàng <hồ sơ Thiết lập từ bản ghi tiếp theo của hồ sơ, RT.

lệnh | theo hàng []
chạy lệnh đường ống đầu ra vào $0 or , như trên, và
RT.

lệnh |& theo hàng []
chạy lệnh như một quá trình đồng dẫn đường ống đầu ra vào $0 or ,
như trên, và RT. Đồng quy trình là một chim ưng sự mở rộng. (lệnh có thể
cũng là một ổ cắm. Xem phần phụ Reduct ® Tập tin tên, phía dưới.)

tiếp theo Dừng xử lý bản ghi đầu vào hiện tại. Bản ghi đầu vào tiếp theo là
đọc và xử lý bắt đầu lại với mẫu đầu tiên trong AWK
chương trình. Khi đến cuối dữ liệu đầu vào, chim ưng thực hiện bất kỳ
END quy tắc).

tập tin tiếp theo Dừng xử lý tệp đầu vào hiện tại. Bản ghi đầu vào tiếp theo đã đọc
đến từ tệp đầu vào tiếp theo. TÊN TỆPARGIND được cập nhật,
FNR được đặt lại thành 1 và quá trình xử lý bắt đầu lại với mẫu đầu tiên
trong chương trình AWK. Khi đến cuối dữ liệu đầu vào, chim ưng
thực hiện bất kỳ END quy tắc).

in In bản ghi hiện tại. Bản ghi đầu ra được kết thúc bằng
giá trị của ORS gia hạn.

in danh sách expr In biểu thức. Mỗi biểu thức được phân tách bằng giá trị của
FSO. Bản ghi đầu ra được kết thúc bằng giá trị ORS gia hạn.

in danh sách expr >hồ sơ In biểu thức trên hồ sơ. Mỗi biểu thức được phân tách bằng dấu
giá trị của FSO. Bản ghi đầu ra được kết thúc bằng giá trị
ORS gia hạn.

printf fmt, danh sách expr Định dạng và in. Nhìn thấy Sản phẩm printf Tuyên bố, phía dưới.

printf fmt, danh sách expr >hồ sơ
Định dạng và in trên hồ sơ.

hệ thống(dòng cmd) Thực hiện lệnh dòng cmdvà trả về trạng thái thoát. (Điều này có thể
không khả dụng trên các hệ thống không phải POSIX.)

fflush ([hồ sơ]) Xóa bất kỳ bộ đệm nào được liên kết với tệp hoặc đường dẫn đầu ra đang mở hồ sơ.
If hồ sơ bị thiếu hoặc nếu nó là chuỗi null, thì mở tất cả
các tập tin và đường ống xuất.

Các chuyển hướng đầu ra bổ sung được phép cho inprintf.

in hữu ích. Cảm ơn ! >> hồ sơ
Thêm đầu ra cho hồ sơ.

in hữu ích. Cảm ơn ! | lệnh
Viết trên một đường ống.

in hữu ích. Cảm ơn ! |& lệnh
Gửi dữ liệu đến đồng xử lý hoặc ổ cắm. (Xem thêm phần phụ Reduct ® Tập tin tên,
phía dưới.)

Sản phẩm theo hàng lệnh trả về 1 khi thành công, 0 ở cuối tệp và -1 khi có lỗi. Trên một
lỗi, LỖI được đặt thành một chuỗi mô tả sự cố.

LƯU Ý: Không mở được ổ cắm hai chiều dẫn đến lỗi không nghiêm trọng được trả về
chức năng gọi điện. Nếu sử dụng đường ống, đồng xử lý hoặc ổ cắm để theo hàng, Hoặc từ in or
printf trong một vòng lặp, bạn phải sử dụng đóng() để tạo các phiên bản mới của lệnh hoặc
ổ cắm. AWK không tự động đóng các đường ống, ổ cắm hoặc đồng xử lý khi chúng quay trở lại
EOF.

Sản phẩm printf Tuyên bố
Các phiên bản AWK của printf tuyên bố và sprintf () chức năng (xem bên dưới) chấp nhận
các định dạng đặc điểm kỹ thuật chuyển đổi sau:

%c Một ký tự duy nhất. Nếu đối số được sử dụng cho %c là số, nó được coi như một
ký tự và được in. Nếu không, đối số được giả định là một chuỗi và
chỉ ký tự đầu tiên của chuỗi đó được in.

%d, %i Một số thập phân (phần nguyên).

%e, %E Một số dấu phẩy động có dạng [-]d.dddddde[+-]dd. Các %E định dạng sử dụng E
thay vì e.

%f, %F Một số dấu phẩy động có dạng [-]ddd.dddddd. Nếu thư viện hệ thống hỗ trợ
nó, %F cũng có sẵn. Điều này giống như %f, nhưng sử dụng các chữ cái viết hoa cho đặc biệt
Các giá trị "không phải là số" và "vô cùng". Nếu như %F không có sẵn, chim ưng sử dụng %f.

%g, %G Sử dụng %e or %f chuyển đổi, tùy theo chuyển đổi nào ngắn hơn, với các số XNUMX không đáng kể
bị đàn áp. Các %G định dạng sử dụng %E thay vì %e.

%o Một số bát phân không dấu (cũng là một số nguyên).

%u Một số thập phân không dấu (một lần nữa, một số nguyên).

%s Một chuỗi ký tự.

%x, %X Một số thập lục phân không dấu (một số nguyên). Các %X định dạng sử dụng ABCDEF thay vì
abcdef.

%% Một đơn % tính cách; không có đối số nào được chuyển đổi.

Các tham số tùy chọn, bổ sung có thể nằm giữa % và thư kiểm soát:

tính$ Sử dụng tínhtại điểm này trong định dạng. Đây được gọi là
vị trí người chỉ định và được thiết kế chủ yếu để sử dụng trong các phiên bản đã dịch của
chuỗi định dạng, không phải trong văn bản gốc của chương trình AWK. Nó là một chim ưng
gia hạn.

- Biểu thức phải được căn trái trong trường của nó.

không gian Đối với chuyển đổi số, đặt tiền tố dương cho giá trị dương bằng dấu cách và giá trị âm
bằng dấu trừ.

+ Dấu cộng, được sử dụng trước công cụ sửa đổi chiều rộng (xem bên dưới), cho biết luôn cung cấp
ký hiệu cho các chuyển đổi số, ngay cả khi dữ liệu được định dạng là số dương. Các +
ghi đè công cụ sửa đổi khoảng trắng.

# Sử dụng “biểu mẫu thay thế” cho một số chữ cái kiểm soát nhất định. Vì %o, cung cấp một
số không. Vì %x%X, cung cấp một 0x or 0X cho một kết quả khác. Vì %e, %E,
%f%F, kết quả luôn chứa dấu thập phân. Vì %g%G, theo sau
số không không bị xóa khỏi kết quả.

0 Một sự dẫn đầu 0 (không) hoạt động như một cờ, cho biết đầu ra phải được đệm bằng
số XNUMX thay vì dấu cách. Điều này chỉ áp dụng cho các định dạng đầu ra số. Điều này
cờ chỉ có hiệu lực khi chiều rộng trường lớn hơn giá trị được in.

' Một ký tự trích dẫn duy nhất hướng dẫn chim ưng để chèn dấu phân tách hàng nghìn của ngôn ngữ
ký tự thành số thập phân và cũng sử dụng dấu thập phân của ngôn ngữ
ký tự với các định dạng dấu chấm động. Điều này yêu cầu hỗ trợ ngôn ngữ chính xác trong
Thư viện C và trong định nghĩa của ngôn ngữ hiện tại.

chiều rộng Trường phải được đệm theo chiều rộng này. Trường này thường được đệm bằng
các khoảng trắng. Với 0 cờ, nó được đệm bằng các số XNUMX.

.khu đất Một số chỉ định độ chính xác sẽ sử dụng khi in. Cho %e, %E, %f
%F, định dạng, điều này chỉ định số chữ số bạn muốn in ở bên phải
dấu thập phân. Cho %g%G định dạng, nó chỉ định số lượng tối đa
chữ số có nghĩa. Cho %d, %i, %o, %u, %x%X định dạng, nó chỉ định
số chữ số tối thiểu để in. Vì %s, nó chỉ định số lượng tối đa
các ký tự từ chuỗi sẽ được in.

Năng động chiều rộngkhu đất khả năng của ISO C printf () các thói quen được hỗ trợ. MỘT *
thay cho một trong hai chiều rộng or khu đất thông số kỹ thuật khiến giá trị của chúng được lấy từ
danh sách đối số để printf or sprintf (). Để sử dụng một đại lượng xác định vị trí với một động
chiều rộng hoặc độ chính xác, cung cấp tính$ sau * trong chuỗi định dạng. Ví dụ,
"% 3 $ * 2 $. * 1 $ s".

Reduct ® Tập tin tên
Khi thực hiện chuyển hướng I / O từ một trong hai in or printf vào một tệp, hoặc qua theo hàng từ một
tập tin, chim ưng nhận ra một số tên tệp đặc biệt trong nội bộ. Những tên tệp này cho phép truy cập
để mở các bộ mô tả tệp được kế thừa từ chim ưngcủa process cha (thường là shell). Này
tên tệp cũng có thể được sử dụng trên dòng lệnh để đặt tên tệp dữ liệu. Các tên tệp là:

- Đầu vào tiêu chuẩn.

/ dev / stdin Đầu vào tiêu chuẩn.

/ dev / stdout Đầu ra tiêu chuẩn.

/ dev / stderr Đầu ra lỗi tiêu chuẩn.

/ dev / fd /n Tệp được liên kết với bộ mô tả tệp đang mở n.

Chúng đặc biệt hữu ích cho các thông báo lỗi. Ví dụ:

in "Bạn thổi nó!" > "/ dev / stderr"

trong khi nếu không bạn sẽ phải sử dụng

in "Bạn thổi nó!" | "con mèo 1> & 2 "

Các tên tệp đặc biệt sau đây có thể được sử dụng với |& toán tử đồng quy trình để tạo
Kết nối mạng TCP / IP:

/ inet / tcp /cảng/ma cà rồng/báo cáo
/ inet4 / tcp /cảng/ma cà rồng/báo cáo
/ inet6 / tcp /cảng/ma cà rồng/báo cáo
Các tệp cho kết nối TCP / IP trên cổng cục bộ cảng đến máy chủ từ xa ma cà rồng trên điều khiển từ xa
cổng báo cáo. Sử dụng một cổng của 0 để hệ thống chọn một cổng. Sử dụng / inet4 để buộc
kết nối IPv4 và / inet6 để buộc kết nối IPv6. Đơn giản / inet sử dụng
mặc định của hệ thống (rất có thể là IPv4).

/ inet / udp /cảng/ma cà rồng/báo cáo
/ inet4 / udp /cảng/ma cà rồng/báo cáo
/ inet6 / udp /cảng/ma cà rồng/báo cáo
Tương tự, nhưng sử dụng UDP / IP thay vì TCP / IP.

Numeric Chức năng
AWK có các hàm số học tích hợp sau:

atan2 (y, x) Trả lại arctangent của y / x tính bằng radian.

cos (thể hiện) Trả về cosine của thể hiện, tính bằng radian.

exp (thể hiện) Hàm số mũ.

int (thể hiện) Cắt ngắn thành số nguyên.

log (thể hiện) Hàm logarit tự nhiên.

rand () Trả lại một số ngẫu nhiên N, từ 0 đến 1, sao cho 0 ≤ N <1.

tội(thể hiện) Trả lại sin của thể hiện, tính bằng radian.

sqrt (thể hiện) Trả về căn bậc hai của thể hiện.

srand ([thể hiện]) Sử dụng thể hiện làm hạt giống mới cho trình tạo số ngẫu nhiên. Nếu không thể hiện is
được cung cấp, sử dụng thời gian trong ngày. Trả lại hạt giống trước đó cho ngẫu nhiên
bộ tạo số.

Chuỗi Chức năng
trố mắt có các hàm chuỗi tích hợp sau:

một loại(s [, d [, làm thế nào]]) Trả về số phần tử trong mảng nguồn s. Sắp xếp
nội dung của s sử dụng chim ưngcác quy tắc thông thường để so sánh các giá trị và
thay thế các chỉ số của các giá trị đã sắp xếp s với tuần tự
số nguyên bắt đầu bằng 1. Nếu mảng đích tùy chọn d is
được chỉ định, bản sao đầu tiên s trong d, và sau đó sắp xếp d, bỏ rơi
chỉ số của mảng nguồn s không thay đổi. Chuỗi tùy chọn làm thế nào
điều khiển hướng và chế độ so sánh. Giá trị hợp lệ cho
làm thế nào có bất kỳ chuỗi nào hợp lệ cho PROCINFO ["sorted_in"]. Nó
cũng có thể là tên của một hàm so sánh do người dùng xác định như
diễn tả cái PROCINFO ["sorted_in"].

asorti (s [, d [, làm thế nào]])
Trả về số phần tử trong mảng nguồn s. Hành vi
giống như của một loại(), ngoại trừ mảng chỉ số đang
được sử dụng để sắp xếp, không phải giá trị mảng. Khi hoàn thành, mảng là
được lập chỉ mục bằng số và các giá trị là giá trị của giá trị ban đầu
các chỉ số. Các giá trị ban đầu bị mất; do đó cung cấp một giây
mảng nếu bạn muốn giữ nguyên bản gốc. Mục đích của
chuỗi tùy chọn làm thế nào giống như được mô tả trong một loại() ở trên.

gensub (r, s, h [, t]) Tìm kiếm chuỗi mục tiêu t cho các trận đấu của biểu thức chính quy
r. Nếu h là một chuỗi bắt đầu bằng g or G, sau đó thay thế tất cả
trận đấu của r với s. Nếu không thì, h là một con số cho biết
trận đấu của r thay thế. Nếu như t không được cung cấp, sử dụng $0 thay thế.
Trong văn bản thay thế s, trình tự \n, Nơi n là một chữ số
từ 1 đến 9, có thể được sử dụng để chỉ văn bản phù hợp
các n'biểu thức con có dấu ngoặc đơn. Trình tự \0 đại diện cho
toàn bộ văn bản phù hợp, cũng như ký tự &. không giống phụ ()
gsub (), chuỗi đã sửa đổi được trả về do kết quả của
và chuỗi mục tiêu ban đầu là không đã thay đổi

gsub (r, s [, t]) Đối với mỗi chuỗi con phù hợp với biểu thức chính quy r trong chuỗi
t, thay thế chuỗi svà trả về số
sự thay thế. Nếu như t không được cung cấp, sử dụng $0. An & trong
văn bản thay thế được thay thế bằng văn bản thực sự là
phù hợp. Sử dụng \& để có được một nghĩa đen &. (Cái này phải được nhập là
"\\ &"; xem TRÒ CHƠI: Hiệu quả AWK Lập trình cho một cuộc thảo luận đầy đủ hơn
trong số các quy tắc cho &'s và dấu gạch chéo ngược trong văn bản thay thế của
phụ (), gsub ()gensub ().)

mục lục(s, t) Trả về chỉ mục của chuỗi t trong chuỗi s, hoặc 0 nếu t không phải là
hiện nay. (Điều này ngụ ý rằng các chỉ số ký tự bắt đầu từ một.)
là một lỗi nghiêm trọng khi sử dụng hằng số regexp cho t.

chiều dài([s]) Trả về độ dài của chuỗi s, hoặc chiều dài của $0 if s không phải là
đã cung cấp. Là một phần mở rộng không chuẩn, với một đối số mảng,
chiều dài() trả về số phần tử trong mảng.

trận đấu(s, r [, a]) Trả lại vị trí trong s trong đó biểu thức chính quy r xảy ra, hoặc
0 nếu r không có mặt và đặt các giá trị của BẮT ĐẦU LẠICHIỀU DÀI.
Lưu ý rằng thứ tự đối số giống như đối với ~ nhà điều hành:
str ~ re. Nếu mảng a được cung cấp, a được xóa và sau đó là các phần tử
1 qua n được lấp đầy bởi các phần của s phù hợp với
biểu thức con có dấu ngoặc đơn tương ứng trong r. Phần tử thứ 0
of a chứa một phần của s phù hợp với toàn bộ thông thường
biểu hiện r. Đăng ký a[n, "khởi đầu"]a[n, "chiều dài"]
cung cấp chỉ mục bắt đầu trong chuỗi và độ dài tương ứng,
của mỗi chuỗi con phù hợp.

patsplit (s, a [, r [, vết nứt]])
Tách chuỗi s vào mảng a và mảng phân cách vết nứt
trên biểu thức chính quy rvà trả về số trường.
Giá trị phần tử là các phần của s phù hợp r. Giá trị của
seps [i] là dải phân cách xuất hiện trước mặt a[i+1]. Nếu r
bị bỏ qua, FPAT được sử dụng thay thế. Các mảng avết nứt đang
xóa trước. Việc phân tách hoạt động giống hệt với phân tách trường
với FPAT, miêu tả trên.

tách ra(s, a [, r [, vết nứt]])
Tách chuỗi s vào mảng a và mảng phân cách vết nứt
trên biểu thức chính quy rvà trả về số trường. Nếu như
r bị bỏ qua, FS được sử dụng thay thế. Các mảng avết nứt đang
xóa trước. seps [i] có phải dấu phân cách trường được so khớp bởi r
giữa a[i]a[i+1]. Nếu r là một không gian duy nhất, sau đó dẫn đầu
khoảng trắng trong s đi vào phần tử mảng bổ sung seps [0]
khoảng trắng ở cuối đi vào phần tử mảng bổ sung seps [n],
Ở đâu n là giá trị trả về của tách ra(s, a, r, vết nứt). Chia tách
hoạt động giống hệt với tách trường, được mô tả ở trên.

sprintf (fmt, danh sách expr) In danh sách expr theo fmtvà trả về chuỗi kết quả.

strtonum (str) Xem xét strvà trả về giá trị số của nó. Nếu như str bắt đầu bằng một
hàng đầu 0, coi nó như một số bát phân. Nếu như str bắt đầu bằng một
hàng đầu 0x or 0X, coi nó như một số thập lục phân. Nếu không thì,
giả sử nó là một số thập phân.

phụ (r, s [, t]) Giống như gsub (), nhưng chỉ thay thế chuỗi con phù hợp đầu tiên.

substr (s, i [, n]) Trả lại nhiều nhất nchuỗi ký tự con của s bắt đầu từ i. Nếu n
bị bỏ qua, sử dụng phần còn lại của s.

tolower (str) Trả lại bản sao của chuỗi str, với tất cả các ký tự viết hoa
in str được dịch sang các bản sao chữ thường tương ứng của chúng.
Các ký tự không phải bảng chữ cái được giữ nguyên.

người du hành (str) Trả lại bản sao của chuỗi str, với tất cả các ký tự viết thường
in str được dịch sang các bản sao chữ hoa tương ứng của chúng.
Các ký tự không phải bảng chữ cái được giữ nguyên.

trố mắt là nhận thức nhiều byte. Điều này có nghĩa rằng mục lục(), chiều dài(), substr ()trận đấu() tất cả công việc
về ký tự, không phải byte.

Thời gian Chức năng
Vì một trong những cách sử dụng chính của các chương trình AWK là xử lý các tệp nhật ký chứa thời gian
thông tin tem, chim ưng cung cấp các chức năng sau để lấy dấu thời gian và
định dạng chúng.

mktime (ngày tháng)
Xoay ngày tháng thành một dấu thời gian có cùng hình thức như được trả lại bởi systime ()
trả về kết quả. Các ngày tháng là một chuỗi có dạng YYYY MM DD HH MM SS [
DST]. Nội dung của chuỗi là sáu hoặc bảy số đại diện cho
tương ứng là năm đầy đủ bao gồm thế kỷ, tháng từ 1 đến 12, ngày của
tháng từ 1 đến 31, giờ trong ngày từ 0 đến 23, phút từ 0 đến
59, thứ hai từ 0 đến 60 và cờ tiết kiệm ánh sáng ban ngày tùy chọn. Giá trị
những con số này không cần phải nằm trong phạm vi được chỉ định; ví dụ, một giờ
-1 có nghĩa là 1 giờ trước nửa đêm. Lịch Gregorian gốc-XNUMX là
giả định, với năm 0 trước năm 1 và năm -1 trước năm 0. Thời gian là
được giả định là ở múi giờ địa phương. Nếu cờ tiết kiệm ánh sáng ban ngày là dương,
thời gian được giả định là thời gian tiết kiệm ánh sáng ban ngày; nếu không, thời gian được giả định là
được tiêu chuẩn thời gian; và nếu phủ định (mặc định), mktime () cố gắng xác định
liệu thời gian tiết kiệm ánh sáng ban ngày có hiệu lực trong thời gian được chỉ định hay không. Nếu như ngày tháng
không chứa đủ phần tử hoặc nếu thời gian kết quả nằm ngoài phạm vi,
mktime () trả về -1.

strftime ([định dạng [, dấu thời gian[, cờ utc]]])
Định dạng dấu thời gian theo đặc điểm kỹ thuật trong định dạng. Nếu cờ utc is
hiện tại và khác XNUMX hoặc khác rỗng, kết quả là UTC, nếu không thì kết quả
theo giờ địa phương. Các dấu thời gian phải có cùng hình thức như được trả lại bởi
systime (). Nếu dấu thời gian bị thiếu, thời gian hiện tại trong ngày được sử dụng. Nếu như định dạng
bị thiếu, một định dạng mặc định tương đương với đầu ra của ngày(1) được sử dụng. Các
định dạng mặc định có sẵn trong PROCINFO ["strftime"]. Xem thông số kỹ thuật cho
các strftime () chức năng trong ISO C cho các chuyển đổi định dạng được đảm bảo
có sẵn.

systime () Trả về thời gian hiện tại trong ngày dưới dạng số giây kể từ Kỷ nguyên
(1970-01-01 00:00:00 UTC trên hệ thống POSIX).

Một chút Thao tác Chức năng
trố mắt cung cấp các chức năng thao tác bit sau. Chúng hoạt động bằng cách chuyển đổi đôi-
giá trị dấu phẩy động chính xác thành uintmax_t số nguyên, thực hiện phép toán, và sau đó
chuyển đổi kết quả trở lại dấu phẩy động. Các chức năng là:

và(v1, v2 [,...]) Trả về bitwise AND của các giá trị được cung cấp trong danh sách đối số.
Phải có ít nhất hai.

phàn nàn (val) Trả lại phần bổ sung bitwise của val.

dịch chuyển (val, tính) Trả lại giá trị của val, được dịch chuyển sang trái bởi tính Bit.

hoặc là(v1, v2 [,...]) Trả về OR bitwise của các giá trị được cung cấp trong danh sách đối số.
Phải có ít nhất hai.

rshift (val, tính) Trả lại giá trị của val, chuyển sang phải bởi tính Bit.

xor (v1, v2 [,...]) Trả về XOR bitwise của các giá trị được cung cấp trong danh sách đối số.
Phải có ít nhất hai.

Kiểu Chức năng
Hàm sau đây được sử dụng với mảng nhiều chiều.

isarray (x)
Trả về true nếu x là một mảng, ngược lại là false.

quốc tế hóa Chức năng
Các chức năng sau có thể được sử dụng trong chương trình AWK của bạn để dịch các chuỗi
trong thời gian chạy. Để biết chi tiết đầy đủ, hãy xem TRÒ CHƠI: Hiệu quả AWK Lập trình.

bindtextdomain (thư mục [, miền])
Chỉ định thư mục nơi chim ưng tìm kiếm .gmo các tệp, trong trường hợp chúng sẽ không hoặc
không thể được đặt ở các vị trí `` tiêu chuẩn '' (ví dụ: trong quá trình thử nghiệm). Nó trở lại
thư mục ở đâu miền là `` ràng buộc. ''
Mặc định miền là giá trị của TÊN VĂN BẢN. Nếu thư mục là chuỗi null
(""), sau đó bindtextdomain () trả về ràng buộc hiện tại cho miền.

dcgettext (chuỗi [, miền [, thể loại]])
Trả lại bản dịch của chuỗi trong miền văn bản miền cho danh mục ngôn ngữ
thể loại. Giá trị mặc định cho miền là giá trị hiện tại của TÊN VĂN BẢN. Các
giá trị mặc định cho thể loại is "LC_MESSAGES".
Nếu bạn cung cấp một giá trị cho thể loại, nó phải là một chuỗi bằng một trong những
danh mục ngôn ngữ được mô tả trong TRÒ CHƠI: Hiệu quả AWK Lập trình. Bạn cũng phải
cung cấp một miền văn bản. Sử dụng TÊN VĂN BẢN nếu bạn muốn sử dụng miền hiện tại.

dcngettext (chuỗi1, chuỗi2, con số [, miền [, thể loại]])
Trả lại dạng số nhiều được sử dụng cho con số bản dịch của chuỗi1chuỗi2 in
miền văn bản miền cho danh mục ngôn ngữ thể loại. Giá trị mặc định cho miền is
giá trị hiện tại của TÊN VĂN BẢN. Giá trị mặc định cho thể loại is "LC_MESSAGES".
Nếu bạn cung cấp một giá trị cho thể loại, nó phải là một chuỗi bằng một trong những
danh mục ngôn ngữ được mô tả trong TRÒ CHƠI: Hiệu quả AWK Lập trình. Bạn cũng phải
cung cấp một miền văn bản. Sử dụng TÊN VĂN BẢN nếu bạn muốn sử dụng miền hiện tại.

ĐÃ XÁC ĐỊNH NGƯỜI DÙNG CHỨC NĂNG


Các hàm trong AWK được định nghĩa như sau:

chức năng tên(tham số ) { báo cáo }

Các hàm được thực thi khi chúng được gọi từ bên trong các biểu thức trong các mẫu hoặc
các hành động. Các tham số thực tế được cung cấp trong lệnh gọi hàm được sử dụng để khởi tạo
các tham số chính thức được khai báo trong hàm. Mảng được truyền bằng tham chiếu, khác
các biến được truyền theo giá trị.

Vì các hàm ban đầu không phải là một phần của ngôn ngữ AWK, nên điều khoản cho
các biến khá vụng về: Chúng được khai báo dưới dạng các tham số phụ trong danh sách tham số.
Quy ước là tách các biến cục bộ khỏi các tham số thực bằng các khoảng trống thừa trong
danh sách tham số. Ví dụ:

chức năng f (p, q, a, b) # a b đang địa phương
{
hữu ích. Cảm ơn !
}

/ abc / { hữu ích. Cảm ơn ! ; f (1, 2) ; hữu ích. Cảm ơn ! }

Dấu ngoặc trái trong một lệnh gọi hàm được yêu cầu ngay lập tức theo sau hàm
tên, không có bất kỳ khoảng trắng can thiệp nào. Điều này tránh sự mơ hồ về cú pháp với
điều hành nối. Hạn chế này không áp dụng cho các chức năng tích hợp được liệt kê
ở trên.

Các hàm có thể gọi nhau và có thể đệ quy. Tham số hàm được sử dụng làm cục bộ
các biến được khởi tạo thành chuỗi null và số XNUMX khi gọi hàm.

Sử dụng trở lại thể hiện để trả về một giá trị từ một hàm. Giá trị trả về là không xác định nếu không
giá trị được cung cấp hoặc nếu hàm trả về bằng cách "giảm" ở cuối.

Là một chim ưng mở rộng, các chức năng có thể được gọi là gián tiếp. Để thực hiện việc này, hãy chỉ định tên của
hàm được gọi, dưới dạng một chuỗi, cho một biến. Sau đó, sử dụng biến như thể nó
là tên của một hàm, có tiền tố là @ ký tên, như vậy:
chức năng myfunc ()
{
in "myfunc triệu tập"
hữu ích. Cảm ơn !
}

{ hữu ích. Cảm ơn !
the_func = "myfunc"
@the_func () # cuộc gọi thông qua the_func đến myfunc
hữu ích. Cảm ơn !
}
Kể từ phiên bản 4.1.2, điều này hoạt động với các chức năng do người dùng xác định, các chức năng tích hợp và
các chức năng mở rộng.

If --lint đã được cung cấp, chim ưng cảnh báo về các lệnh gọi đến các hàm không xác định tại thời điểm phân tích cú pháp,
thay vì lúc chạy. Việc gọi một hàm không xác định tại thời điểm chạy là một lỗi nghiêm trọng.

Từ chức năng có thể được sử dụng thay cho chức năng, mặc dù điều này không được dùng nữa.

NĂNG ĐỘNG ĐANG TẢI Mới CHỨC NĂNG


Bạn có thể thêm động các chức năng tích hợp mới để chạy chim ưng thông dịch viên với
@trọng tải bản tường trình. Chi tiết đầy đủ nằm ngoài phạm vi của trang hướng dẫn này; Thấy chưa TRÒ CHƠI:
Hiệu quả AWK Lập trình.

TÍN HIỆU


Sản phẩm chim ưng hồ sơ chấp nhận hai tín hiệu. SIGUSR1 khiến nó kết xuất một hồ sơ và chức năng
gọi ngăn xếp đến tệp hồ sơ, đó là awkprof.outhoặc bất kỳ tệp nào được đặt tên
với --Hồ sơ lựa chọn. Sau đó nó tiếp tục chạy. ĐĂNG KÍ nguyên nhân chim ưng đổ
hồ sơ và chức năng cuộc gọi ngăn xếp và sau đó thoát.

QUỐC TẾ HÓA


Hằng số chuỗi là chuỗi các ký tự được đặt trong dấu ngoặc kép. Không phải tiếng Anh
môi trường nói, có thể đánh dấu các chuỗi trong chương trình AWK là yêu cầu
bản dịch sang ngôn ngữ tự nhiên địa phương. Các chuỗi như vậy được đánh dấu trong chương trình AWK với
dấu gạch dưới ở đầu (“_”). Ví dụ,

chim ưng 'BẮT ĐẦU { in "xin chào, thế giới " }'

luôn in chào bạn, thế giới. Nhưng,

chim ưng 'BẮT ĐẦU { in _"xin chào, thế giới " }'

có thể in Bonjour, Monde ở Phap.

Có một số bước liên quan đến việc sản xuất và chạy chương trình AWK có thể bản địa hóa.

KHAI THÁC. Thêm một BEGIN hành động để gán một giá trị cho TÊN VĂN BẢN biến để đặt miền văn bản
đến một tên được liên kết với chương trình của bạn:

BEGIN { TÊN VĂN BẢN = "myprog" }

Điều này cho phép chim ưng để tìm .gmo tệp được liên kết với chương trình của bạn. Không có cái này
bươc, chim ưng sử dụng tin nhắn miền văn bản, có thể không chứa bản dịch
cho chương trình của bạn.

2. Đánh dấu tất cả các chuỗi cần được dịch bằng dấu gạch dưới hàng đầu.

3. Nếu cần, hãy sử dụng dcgettext () và / hoặc bindtextdomain () các chức năng trong chương trình của bạn,
khi thích hợp

4. chạy chim ưng --gen-nồi -f myprog.awk > myprog.pot để tạo ra một .nồi tập tin cho bạn
chương trình.

5. Cung cấp các bản dịch thích hợp, xây dựng và cài đặt .gmo các tập tin.

Các tính năng quốc tế hóa được mô tả đầy đủ chi tiết trong TRÒ CHƠI: Hiệu quả AWK
Lập trình.

POSIX Tương thích


Mục tiêu chính cho chim ưng là khả năng tương thích với tiêu chuẩn POSIX, cũng như với
phiên bản mới nhất của Brian Kernighan's ôi. Cuối cùng, chim ưng kết hợp những điều sau đây
người dùng có thể nhìn thấy các tính năng không được mô tả trong sách AWK, nhưng là một phần của Brian
Phiên bản của Kernighan ôivà nằm trong tiêu chuẩn POSIX.

Cuốn sách chỉ ra rằng việc gán biến dòng lệnh xảy ra khi ôi nếu không thì
mở đối số dưới dạng tệp, sau đối số BEGIN quy tắc được thực thi. Tuy nhiên, trong
triển khai trước đó, khi một nhiệm vụ như vậy xuất hiện trước bất kỳ tên tệp nào,
nhiệm vụ sẽ xảy ra trước các BEGIN quy tắc đã được chạy. Các ứng dụng phụ thuộc vào
tính năng này." Khi nào ôi đã được thay đổi để phù hợp với tài liệu của nó, -v tùy chọn cho
gán các biến trước khi thực thi chương trình được thêm vào để phù hợp với các ứng dụng
phụ thuộc vào hành vi cũ. (Tính năng này đã được cả Bell đồng ý
Phòng thí nghiệm và các nhà phát triển GNU.)

Khi xử lý các đối số, chim ưng sử dụng tùy chọn đặc biệt “-” để báo hiệu sự kết thúc của
tranh luận. Trong chế độ tương thích, nó cảnh báo về nhưng nếu không thì bỏ qua các tùy chọn không xác định.
Trong hoạt động bình thường, các đối số như vậy được chuyển đến chương trình AWK để nó xử lý.

Sách AWK không xác định giá trị trả về của srand (). Tiêu chuẩn POSIX có nó
trả lại hạt giống mà nó đang sử dụng, để cho phép theo dõi các chuỗi số ngẫu nhiên.
Do đó srand () in chim ưng cũng trả về hạt giống hiện tại của nó.

Các tính năng mới khác là: Việc sử dụng nhiều -f tùy chọn (từ MKS ôi); các MÔI TRƯỜNG mảng;
các \a\v trình tự thoát (được thực hiện ban đầu trong chim ưng và đưa trở lại Chuông
Phiên bản phòng thí nghiệm); các tolower ()toupper () các chức năng cài sẵn (từ Bell
Phiên bản phòng thí nghiệm); và các thông số kỹ thuật chuyển đổi ISO C trong printf (thực hiện đầu tiên trong
phiên bản Phòng thí nghiệm Bell).

LỊCH SỬ TÍNH NĂNG, ĐẶC ĐIỂM


Có một tính năng của việc triển khai AWK trước đây chim ưng hỗ trợ: Có thể
để gọi chiều dài() hàm tích hợp sẵn không chỉ không có đối số mà thậm chí không có
dấu ngoặc đơn! Vì vậy,

a = chiều dài # Thánh thứ gì đó 60, Người dơi!

giống như một trong hai

a = chiều dài()
a = chiều dài ($ 0)

Sử dụng tính năng này là một cách làm kém hiệu quả và chim ưng đưa ra cảnh báo về việc sử dụng nó nếu --lint is
được chỉ định trên dòng lệnh.

GNU MỞ RỘNG


trố mắt có quá nhiều tiện ích mở rộng cho POSIX ôi. Chúng được mô tả trong này
tiết diện. Tất cả các tiện ích mở rộng được mô tả ở đây có thể bị vô hiệu hóa bằng cách gọi chim ưng với
--truyên thông or --posix tùy chọn.

Các tính năng sau của chim ưng không có sẵn trong POSIX ôi.

· Không có tìm kiếm đường dẫn nào được thực hiện cho các tệp được đặt tên qua -f lựa chọn. Do đó AWKPATH
biến môi trường không phải là đặc biệt.

· Không có cơ sở để thực hiện việc đưa vào tệp (chim ưng's @bao gồm cơ chế).

· Không có cơ sở để thêm động các hàm mới được viết bằng C (chim ưng's @trọng tải
cơ chế).

· Các \x trình tự thoát. (Đã vô hiệu hóa với --posix.)

· Khả năng tiếp tục các dòng sau ?:. (Đã vô hiệu hóa với --posix.)

· Hằng số bát phân và thập lục phân trong các chương trình AWK.

· Các ARGIND, BINMODE, LỖI, LINT, RTTÊN VĂN BẢN các biến không đặc biệt.

· Các BỎ QUA TRƯỜNG HỢP biến và các tác dụng phụ của nó không có sẵn.

· Các CHIỀU RỘNG LĨNH VỰC phân tách trường có độ rộng cố định và biến đổi.

· Các FPAT biến và tách trường dựa trên giá trị trường.

· Các THỦ TỤC mảng không có sẵn.

· Việc sử dụng RS như một biểu thức chính quy.

· Các tên tệp đặc biệt có sẵn cho chuyển hướng I / O không được nhận dạng.

· Các |& toán tử để tạo đồng quy trình.

· Các BẮT ĐẦUTỆPKẾT THÚC các mẫu đặc biệt không có sẵn.

· Khả năng tách các ký tự riêng lẻ bằng cách sử dụng chuỗi null làm giá trị của FS,
và là đối số thứ ba để tách ().

· Đối số thứ tư tùy chọn để tách () để nhận các văn bản phân tách.

· Đối số thứ hai tùy chọn cho đóng() chức năng.

· Đối số thứ ba tùy chọn cho trận đấu() chức năng.

· Khả năng sử dụng các từ chỉ định vị trí với printfsprintf ().

· Khả năng truyền một mảng tới chiều dài().

· Các và(), một loại(), asorti (), bindtextdomain (), phàn nàn (), dcgettext (), dcngettext (),
gensub (), lshift (), mktime (), hoặc là(), patsplit (), rshift (), strftime (), strtonum (),
systime ()xor () chức năng.

· Các chuỗi có thể bản địa hóa.

Sách AWK không xác định giá trị trả về của đóng() chức năng. trố mắt's đóng()
trả về giá trị từ fđóng(3), hoặc khăn giấy(3), khi đóng tệp hoặc đường dẫn đầu ra,
tương ứng. Nó trả về trạng thái thoát của quá trình khi đóng một đường ống đầu vào. Các
giá trị trả về là -1 nếu tệp được đặt tên, đường dẫn hoặc đồng quy trình không được mở bằng
chuyển hướng.

Thời Gian chim ưng được gọi với --truyên thông tùy chọn, nếu fs đối số với -F Tùy chọn là
"T", sau đó FS được đặt thành ký tự tab. Lưu ý rằng đánh máy chim ưng -F \ t hữu ích. Cảm ơn ! đơn giản là nguyên nhân
shell để trích dẫn "t" và không chuyển "\ t" cho -F lựa chọn. Vì đây là một
trường hợp đặc biệt khá xấu xí, nó không phải là hành vi mặc định. Hành vi này cũng không
xảy ra nếu --posix đã được chỉ định. Để thực sự lấy một ký tự tab làm trường
dấu phân cách, tốt nhất là sử dụng dấu ngoặc kép: chim ưng -F '\ t' hữu ích. Cảm ơn !.

MÔI TRƯỜNG BIẾN


Sản phẩm AWKPATH biến môi trường có thể được sử dụng để cung cấp danh sách các thư mục chim ưng
tìm kiếm khi tìm kiếm các tệp được đặt tên qua -f, --tập tin, -i--bao gồm các tùy chọn. Nếu
tìm kiếm ban đầu không thành công, đường dẫn được tìm kiếm lại sau khi thêm vào .awk vào tên tệp.

Sản phẩm AWKLIBPATH biến môi trường có thể được sử dụng để cung cấp danh sách các thư mục chim ưng
tìm kiếm khi tìm kiếm các tệp được đặt tên qua -l--trọng tải tùy chọn.

Sản phẩm GAWK_READ_TIMEOUT biến môi trường có thể được sử dụng để chỉ định thời gian chờ trong
mili giây để đọc đầu vào từ thiết bị đầu cuối, đường ống hoặc giao tiếp hai chiều bao gồm
ổ cắm.

Để kết nối với máy chủ từ xa qua ổ cắm, GAWK_SOCK_RETRIES kiểm soát số lượng
thử lại, và GAWK_MSEC_SLEEP và khoảng thời gian giữa các lần thử lại. Khoảng thời gian trong
mili giây. Trên các hệ thống không hỗ trợ bạn ngủ(3), giá trị được làm tròn đến một
tích phân số giây.

If POSIXLY_CORRECT tồn tại trong môi trường, sau đó chim ưng cư xử chính xác như thể --posix
đã được chỉ định trên dòng lệnh. Nếu như --lint đã được chỉ định, chim ưng đưa ra một cảnh báo
thông báo cho hiệu ứng này.

EXIT TÌNH TRẠNG


Nếu ra câu lệnh được sử dụng với một giá trị, sau đó chim ưng thoát với giá trị số đã cho
với nó.

Ngược lại, nếu không có vấn đề gì trong quá trình thực thi, chim ưng thoát ra với giá trị của C
không thay đổi EXIT_SUCCESS. Đây thường là số không.

Nếu xảy ra lỗi, chim ưng thoát với giá trị của hằng số C EXIT_FAILURE. Đây là
thường là một.

If chim ưng thoát do lỗi nghiêm trọng, trạng thái thoát là 2. Trên các hệ thống không phải POSIX, điều này
giá trị có thể được ánh xạ tới EXIT_FAILURE.

PHIÊN BẢN THÔNG TIN


Tài liệu trang người đàn ông này chim ưng, Phiên bản 4.1.

TÁC GIẢ


Phiên bản gốc của UNIX ôi được thiết kế và thực hiện bởi Alfred Aho, Peter
Weinberger và Brian Kernighan của Phòng thí nghiệm Bell. Brian Kernighan tiếp tục
duy trì và nâng cao nó.

Paul Rubin và Jay Fenlason, thuộc Tổ chức Phần mềm Tự do, đã viết chim ưng, để tương thích
với phiên bản gốc của ôi được phân phối trong phiên bản thứ bảy UNIX. John Woods
đã đóng góp một số bản sửa lỗi. David Trueman, với sự đóng góp của Arnold Robbins,
thực hiện chim ưng tương thích với phiên bản mới của UNIX ôi. Arnold Robbins là hiện tại
người bảo trì.

Xem TRÒ CHƠI: Hiệu quả AWK Lập trình để có danh sách đầy đủ những người đóng góp cho chim ưng và của mình
tài liệu hướng dẫn.

Xem README tập tin trong chim ưng phân phối để biết thông tin cập nhật về người bảo trì
và những cổng nào hiện đang được hỗ trợ.

BUG BÁO CÁO


Nếu bạn tìm thấy một lỗi trong chim ưng, vui lòng gửi thư điện tử tới [email được bảo vệ]. Xin
bao gồm hệ điều hành của bạn và bản sửa đổi của nó, phiên bản của chim ưng (Từ chim ưng --phiên bản),
trình biên dịch C nào bạn đã sử dụng để biên dịch nó và một chương trình thử nghiệm và dữ liệu nhỏ như
có thể để tái tạo vấn đề.

Trước khi gửi báo cáo lỗi, vui lòng thực hiện những việc sau. Trước tiên, hãy xác minh rằng bạn có
phiên bản mới nhất của chim ưng. Nhiều lỗi (thường là những lỗi nhỏ) được sửa ở mỗi lần phát hành,
và nếu của bạn đã lỗi thời, vấn đề có thể đã được giải quyết. Thứ hai, vui lòng xem
nếu thiết lập biến môi trường LC_ALL đến LC_ALL = C khiến mọi thứ hoạt động như bạn
trông chờ. Nếu vậy, đó là một vấn đề ngôn ngữ và có thể có hoặc không thực sự là một lỗi. Cuối cùng, xin vui lòng
hãy đọc kỹ trang hướng dẫn này và hướng dẫn tham khảo để chắc chắn rằng những gì bạn nghĩ là
thực sự là lỗi, thay vì chỉ là một ngôn ngữ lập dị.

Dù bạn làm gì, hãy làm KHÔNG đăng một báo cáo lỗi trong comp.lang.awk. Trong khi chim ưng phát triển
thỉnh thoảng đọc nhóm tin này, đăng báo cáo lỗi có một cách không đáng tin cậy để báo cáo
lỗi. Thay vào đó, vui lòng sử dụng các địa chỉ thư điện tử nêu trên. Có thật không.

Nếu bạn đang sử dụng hệ thống dựa trên GNU / Linux hoặc BSD, bạn có thể muốn gửi báo cáo lỗi tới
nhà cung cấp phân phối của bạn. Điều đó tốt, nhưng vui lòng gửi một bản sao cho nhân viên chính thức
địa chỉ email cũng vậy, vì không có gì đảm bảo rằng báo cáo lỗi sẽ được chuyển tiếp đến
các chim ưng người bảo trì.

Sử dụng gawk trực tuyến bằng các dịch vụ onworks.net


Máy chủ & Máy trạm miễn phí

Tải xuống ứng dụng Windows & Linux

Lệnh Linux

Ad