A confusão pode ser causada pelo fato de que o autor original usou o mesmo nome de variável para o shell:
benchmark=30;gr...
como ele fez dentro de awk
:
awk -vbenchmark=$benchmark
que pode ou não pode atribuir o valor da variável de shell benchmark
à awk
variable benchmark
.
Quando awk
tiver esse valor ( 30
neste caso), awk
verificará se a sexta coluna do arquivo de entrada wk.txt
é maior que esse valor:
$6 > benchmark
O teste, usando seu exemplo, é, portanto, a comparação de string:
for > 30
que, embora legal, não faz muito sentido. O exemplo de arquivo de entrada é um exemplo genuíno ou apenas um teste aleatório?
Isso é avaliado como verdadeiro, portanto awk
imprime a linha inteira como wc -l
, o que conta o número de linhas. Como você só tem uma linha em seu arquivo de entrada, a contagem de linhas em que a sexta coluna é maior que 30 é 1
.
Esse valor é atribuído à variável do shell b
.