Nó thực sự có trong POSIX awk
(liên kết đến POSIX 2008, tôi cũng tin rằng các phiên bản trước đó). -v
được mô tả trong phần Tùy chọn , cách khác là trong phần Toán hạng .
Có một sự khác biệt giữa -v
và chuyển các bài tập ở cuối với tên tệp:
Ứng dụng phải đảm bảo rằng đối số gán có cùng dạng với toán hạng gán. Việc gán biến được chỉ định sẽ xảy ra trước khi thực hiện chương trình awk, bao gồm các hành động được liên kết với các mẫu BEGIN (nếu có). Nhiều lần xuất hiện của tùy chọn này có thể được chỉ định.
[...] Mỗi lần gán biến như vậy sẽ xảy ra ngay trước khi xử lý tệp sau , nếu có. Do đó, một phép gán trước đối số tệp đầu tiên sẽ được thực thi sau các hành động BEGIN (nếu có), trong khi việc gán sau đối số tệp cuối cùng sẽ xảy ra trước các hành động END (nếu có). Nếu không có đối số tệp, các phép gán sẽ được thực thi trước khi xử lý đầu vào tiêu chuẩn.
Thí dụ:
$ cat input
hello
hello
$ awk -v var=one 'BEGIN{print var} /hello/{print var} END{print var}' \
var=two input var=three input var=four
one
two
two
three
three
four