Na verdade, está no POSIX awk
(link para o POSIX 2008, versões anteriores também o consideravam). -v
é descrito na seção Opções , o contrário é na seção Operandos .
Há uma diferença entre -v
e passar as atribuições no final com os nomes dos arquivos:
O aplicativo deve garantir que o argumento de atribuição esteja na mesma forma que um operando de atribuição. A atribuição de variável especificada deve ocorrer antes da execução do programa awk, incluindo as ações associadas aos padrões BEGIN (se houver). Várias ocorrências dessa opção podem ser especificadas.
- Misturado com os nomes dos arquivos:
[...] Cada atribuição de variável deve ocorrer imediatamente antes do processamento do seguinte arquivo , se houver. Assim, uma atribuição antes do argumento do primeiro arquivo deve ser executada após as ações BEGIN (se houver), enquanto uma atribuição após o último argumento do arquivo deve ocorrer antes das ações END (se houver). Se não houver argumentos de arquivo, as atribuições devem ser executadas antes do processamento da entrada padrão.
Exemplo:
$ 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