Como posso me referir a um campo awk definido com uma expressão arbitrária?

2

No script de shell, temos a construção ${name} para especificar explicitamente um nome de variável e separá-lo do texto adjacente.

Em awk , posso referir-me ao quinto campo com $5 ou ao enésimo campo, como apontado pela variável N com $N .

E se eu quiser me referir ao campo Nth + 1? Se eu usar $N+1 , o conteúdo do campo enésimo será incrementado em 1, o que não é o que eu quero.

Eu poderia definir outra variável temp = N+1 e, em seguida, referenciar $temp , mas não há uma maneira de especificar o campo "Nth mais 1" de uma só vez?

Ou, para esse assunto, posso referenciar o enésimo campo onde N é retornado por uma função?

    
por Wildcard 04.01.2016 / 23:52

1 resposta

5

Apenas coloque números entre parênteses:

$ echo 1 3 5 7 | awk '{print $(1+3)}'
7

Se você quiser calcular o número do campo com alguma função, não precisará de parênteses:

$ echo 1 3 5 7 | awk '{print $sqrt(16)}'
7

(Claro que eles não doem, então $(sqrt(16)) funciona também)

    
por 05.01.2016 / 00:04

Tags