Ini sebenarnya dalam POSIX awk
(tautan ke POSIX 2008, versi sebelumnya juga saya percaya). -v
dijelaskan di bagian Opsi , sebaliknya di bagian Operand .
Ada perbedaan antara -v
dan melewati tugas di akhir dengan nama file:
Aplikasi harus memastikan bahwa argumen penugasan berada dalam bentuk yang sama dengan operan penugasan. Penugasan variabel yang ditentukan harus dilakukan sebelum menjalankan program awk, termasuk tindakan yang terkait dengan pola BEGIN (jika ada). Beberapa kemunculan opsi ini dapat ditentukan.
- Dicampur dengan nama file:
[...] Setiap tugas variabel tersebut harus terjadi sesaat sebelum pemrosesan file berikut , jika ada. Dengan demikian, penugasan sebelum argumen file pertama harus dieksekusi setelah tindakan BEGIN (jika ada), sementara penugasan setelah argumen file terakhir harus terjadi sebelum tindakan END (jika ada). Jika tidak ada argumen file, tugas harus dilakukan sebelum memproses input standar.
Contoh:
$ 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