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