Đây là lệnh original-awk có thể 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
original-awk - ngôn ngữ xử lý và quét theo hướng mẫu
SYNOPSIS
ban đầu-awk [ -F fs ] [ -v var = giá trị ] [ 'ăn xin' | -f tập tin chương trình ] [ hồ sơ ... ]
MÔ TẢ
awk (original-awk) quét từng đầu vào hồ sơ cho các dòng phù hợp với bất kỳ bộ mẫu nào
được chỉ định theo nghĩa đen trong ăn xin hoặc trong một hoặc nhiều tệp được chỉ định là -f tập tin chương trình. Với mỗi
có thể có một hành động liên quan sẽ được thực hiện khi một dòng hồ sơ
phù hợp với mẫu. Mỗi dòng được so khớp với phần mẫu của mọi mẫu-
tuyên bố hành động; hành động liên quan được thực hiện cho mỗi mẫu phù hợp. Tập tin
tên - có nghĩa là đầu vào tiêu chuẩn. Không tí nào hồ sơ của hình thức var = giá trị được coi như một
nhiệm vụ, không phải tên tệp và được thực thi tại thời điểm nó sẽ được mở nếu nó
là một tên tệp. Các tùy chọn -v tiếp theo var = giá trị là một nhiệm vụ phải được thực hiện trước
ăn xin được thực hiện; bất kỳ số nào trong số -v các tùy chọn có thể có. Các -F fs tùy chọn xác định
dấu phân tách trường đầu vào thành biểu thức chính quy fs.
Một dòng đầu vào thường được tạo thành từ các trường được phân tách bằng khoảng trắng hoặc bằng
biểu hiện FS. Các trường được ký hiệu $1, $2, ..., trong khi $0 đề cập đến toàn bộ dòng.
If FS là null, dòng đầu vào được chia thành một trường cho mỗi ký tự.
Một câu lệnh hành động mẫu có dạng
Belt Hold { hoạt động }
Thiếu { hoạt động } có nghĩa là in dòng; một mẫu bị thiếu luôn khớp. Mẫu-
các câu lệnh hành động được phân tách bằng dòng mới hoặc dấu chấm phẩy.
Một hành động là một chuỗi các câu lệnh. Một câu lệnh có thể là một trong những câu sau:
nếu( biểu hiện ) tuyên bố [ khác tuyên bố ]
trong khi( biểu hiện ) tuyên bố
vì( biểu hiện ; biểu hiện ; biểu hiện ) tuyên bố
vì( là in mảng ) tuyên bố
do tuyên bố trong khi( biểu hiện )
phá vỡ
tiếp tục
{[ tuyên bố ... ]}
biểu hiện # thông thường là = biểu hiện
in [ danh sách biểu thức ] [> biểu hiện ]
printf định dạng [, danh sách biểu thức ] [> biểu hiện ]
trở về [ biểu hiện ]
tiếp theo # bỏ qua các mẫu còn lại trên dòng nhập này
nextfile # bỏ qua phần còn lại của tệp này, mở tiếp theo, bắt đầu từ đầu
xóa mảng[ biểu hiện ] # xóa một phần tử mảng
xóa mảng # xóa tất cả các phần tử của mảng
lối ra [ biểu hiện ] # thoát ngay lập tức; tình trạng là biểu hiện
Các câu lệnh được kết thúc bằng dấu chấm phẩy, dòng mới hoặc dấu ngoặc nhọn. Trống rỗng biểu hiện-
là viết tắt của $0. Hằng số chuỗi được trích dẫn "", với các lối thoát C thông thường được nhận dạng
ở trong. Các biểu thức nhận các giá trị chuỗi hoặc số nếu thích hợp và được xây dựng bằng cách sử dụng
các nhà khai thác + - * / % ^ (lũy thừa), và nối (được biểu thị bằng khoảng trắng).
Các nhà khai thác ! ++ -- += -= *= /= %= ^= > >= < <= == != ?: cũng có sẵn trong
biểu thức. Các biến có thể là phần tử vô hướng, phần tử mảng (ký hiệu là x[i]) hoặc các lĩnh vực.
Các biến được khởi tạo thành chuỗi null. Các chỉ số con của mảng có thể là bất kỳ chuỗi nào, không phải
nhất thiết phải số; điều này cho phép một dạng bộ nhớ liên kết. Nhiều đăng ký
như là [i, j, k] được cho phép; các thành phần được nối với nhau, được phân tách bằng giá trị
of BÊN DƯỚI.
Sản phẩm in câu lệnh in các đối số của nó trên đầu ra chuẩn (hoặc trên tệp nếu >hồ sơ or
>>hồ sơ có mặt hoặc trên đường ống nếu |cmd là hiện tại), được phân tách bằng trường đầu ra hiện tại
dấu phân tách và kết thúc bằng dấu phân tách bản ghi đầu ra. hồ sơ và cmd có thể là nghĩa đen
tên hoặc biểu thức trong ngoặc đơn; các giá trị chuỗi giống hệt nhau trong các câu lệnh khác nhau biểu thị
cùng một tệp đang mở. Các printf câu lệnh định dạng danh sách biểu thức của nó theo
định dạng (xem printf(3)). Chức năng tích hợp gần(thể hiện) đóng tệp hoặc đường ống thể hiện.
Chức năng tích hợp fflush (thể hiện) xóa bất kỳ đầu ra có bộ đệm nào cho tệp hoặc đường ống thể hiện.
Các hàm toán học exp, đăng nhập, câu hỏi, tội, xe đẩyvà atan2 được tích hợp sẵn. Khác được xây dựng-
trong các chức năng:
chiều dài độ dài của đối số của nó được coi là một chuỗi hoặc trong số $0 nếu không có đối số.
rand số ngẫu nhiên trên (0,1)
mảnh vụn đặt hạt giống cho rand và trả về hạt giống trước đó.
int cắt ngắn thành một giá trị số nguyên
substr (s, m, n)
các nchuỗi ký tự con của s bắt đầu từ vị trí m được tính từ 1.
mục lục(s, t)
vị trí trong s nơi chuỗi t xảy ra, hoặc 0 nếu nó không xảy ra.
trận đấu(s, r)
vị trí trong s trong đó biểu thức chính quy r xảy ra, hoặc 0 nếu nó không xảy ra. Các
biến BẮT ĐẦU LẠI và CHIỀU DÀI được đặt thành vị trí và độ dài của kết quả phù hợp
chuỗi.
tách ra(s, a, fs)
tách chuỗi s thành các phần tử mảng a[1], a[2], ..., a[n], và trả lại n. Các
phân tách được thực hiện với biểu thức chính quy fs hoặc với dấu tách trường FS if
fs không được đưa ra. Một chuỗi trống làm dấu phân tách trường chia chuỗi thành một
phần tử mảng trên mỗi ký tự.
phụ (r, t, s)
sản phẩm thay thế t cho lần xuất hiện đầu tiên của biểu thức chính quy r trong chuỗi s.
If s không được đưa ra, $0 Được sử dụng.
gsub giống như phụ ngoại trừ việc tất cả các lần xuất hiện của biểu thức chính quy đều được thay thế; phụ
và gsub trả lại số lượng thay thế.
sprintf (fmt, thể hiện, ... )
chuỗi do định dạng thể hiện ... theo printf(3) định dạng
fmt
hệ thống(cmd)
thi hành cmd và trả về trạng thái thoát của nó
tolower (str)
trả lại một bản sao của str với tất cả các ký tự viết hoa được dịch sang
chữ thường tương ứng tương ứng.
người du hành (str)
trả lại một bản sao của str với tất cả các ký tự viết thường được dịch sang
chữ hoa tương ứng tương ứng.
`` Chức năng '' theo hàng bộ $0 tới bản ghi đầu vào tiếp theo từ tệp đầu vào hiện tại;
theo hàng <hồ sơ bộ $0 đến bản ghi tiếp theo từ hồ sơ. theo hàng x đặt biến x thay thế.
Ngoài ra, thẻ cào cmd | theo hàng dẫn đầu ra của cmd trong theo hàng; mỗi cuộc gọi của theo hàng Trả về
dòng đầu ra tiếp theo từ cmd. Trong tất cả trường hợp, theo hàng trả về 1 cho một đầu vào thành công,
0 cho cuối tệp và -1 cho một lỗi.
Các mẫu là sự kết hợp Boolean tùy ý (với ! || &&) của biểu thức chính quy và
biểu thức quan hệ. Biểu thức chính quy như trong ví dụ; xem grep(1). Bị cô lập
biểu thức chính quy trong một mẫu áp dụng cho toàn bộ dòng. Biểu thức chính quy cũng có thể
xảy ra trong các biểu thức quan hệ, sử dụng các toán tử ~ và !~. /re/ là một thường xuyên liên tục
biểu hiện; bất kỳ chuỗi nào (hằng số hoặc biến) có thể được sử dụng như một biểu thức chính quy, ngoại trừ
ở vị trí của một biểu thức chính quy biệt lập trong một mẫu.
Một mẫu có thể bao gồm hai mẫu được phân tách bằng dấu phẩy; trong trường hợp này, hành động là
được thực hiện cho tất cả các dòng từ sự xuất hiện của mẫu đầu tiên mặc dù sự xuất hiện của
thư hai.
Biểu thức quan hệ là một trong những biểu thức sau:
biểu hiện cửa hàng bán đồ biểu hiện thông thường
biểu hiện bắt đầu lại biểu hiện
biểu hiện in tên mảng
(thể hiện,expr, ...) in tên mảng
trong đó một relop là bất kỳ toán tử quan hệ nào trong số sáu toán tử quan hệ trong C và một matchop là ~
(trận đấu) hoặc !~ (không phù hợp với). Một điều kiện là một biểu thức số học, một quan hệ
biểu thức hoặc kết hợp Boolean của chúng.
Các mẫu đặc biệt BEGIN và END có thể được sử dụng để nắm bắt quyền kiểm soát trước đầu vào đầu tiên
dòng được đọc và sau dòng cuối cùng. BEGIN và END không kết hợp với các mẫu khác.
Tên biến có ý nghĩa đặc biệt:
CONVFMT
định dạng chuyển đổi được sử dụng khi chuyển đổi số (mặc định % .6g)
FS biểu thức chính quy được sử dụng để phân tách các trường; cũng có thể thiết lập theo tùy chọn -Ffs.
NF số trường trong bản ghi hiện tại
NR số thứ tự của bản ghi hiện tại
FNR số thứ tự của bản ghi hiện tại trong tệp hiện tại
TÊN TỆP
tên của tệp đầu vào hiện tại
RS dấu phân tách bản ghi đầu vào (dòng mới mặc định)
FSO dấu phân tách trường đầu ra (trống mặc định)
ORS gia hạn dấu phân tách bản ghi đầu ra (dòng mới mặc định)
OFMT định dạng đầu ra cho các số (mặc định % .6g)
BÊN DƯỚI tách nhiều chỉ số phụ (mặc định 034)
ARGC số đối số, có thể gán
ARGV mảng đối số, có thể gán được; các thành viên không null được lấy làm tên tệp
MÔI TRƯỜNG
mảng biến môi trường; subcripts là tên.
Các hàm có thể được định nghĩa (tại vị trí của một câu lệnh hành động mẫu) do đó:
chức năng foo (a, b, c) { ... trở lại x }
Các tham số được truyền theo giá trị nếu vô hướng và theo tham chiếu nếu tên mảng; chức năng có thể là
được gọi là đệ quy. Các tham số là cục bộ cho hàm; tất cả các biến khác là toàn cục.
Do đó, các biến cục bộ có thể được tạo bằng cách cung cấp các tham số dư thừa trong hàm
Định nghĩa.
VÍ DỤ
chiều dài ($ 0)> 72
In các dòng dài hơn 72 ký tự.
{in $ 2, $ 1}
In hai trường đầu tiên theo thứ tự ngược lại.
BẮT ĐẦU {FS = ", [\ t] * | [\ t] +"}
{in $ 2, $ 1}
Tương tự, với các trường đầu vào được phân tách bằng dấu phẩy và / hoặc khoảng trống và tab.
{s + = $ 1}
HẾT {print "sum is", s, "average is", s / NR}
Cộng cột đầu tiên, in tổng và trung bình.
/băt đâu dưng/
In tất cả các dòng giữa các cặp bắt đầu / dừng.
BEGIN {# Mô phỏng bỏ lỡ(1)
for (i = 1; i <ARGC; i ++) printf "% s", ARGV [i]
printf "\ n"
lối ra }
Sử dụng trực tuyến original-awk bằng các dịch vụ onworks.net