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 .