why did it print more times
Seu script awk
tem uma ação sem padrão, o que significa que ela será executada para cada linha de entrada. Se você não quiser imprimir o padrão que procura várias vezes, não faça isso .
why the empty line are printed
Porque você imprime w
e, em seguida, define w=""
. Então você imprime w
novamente para cada linha de entrada.
A pergunta ofuscada torna difícil dizer, mas acho que você quer fazer isso:
awk -F'=' '/[[:blank:]]k/{ print $2 }' data-file