Experimente esta variante:
tcpdump -l -i any dst port 53 | stdbuf -oL awk '/ A\? / {u = NF - 1; print $u}' | sed 's/.$//g'
Você tem que armazenar em buffer todas as linhas de saída do tcpdump, a opção -l
é usada para isso.
De man tcpdump
:
-l Make stdout line buffered. Useful if you want to see the data while capturing it.
Para fazer o buffer de linha de saída awk stdbuf é usado.
-o, --output=MODE adjust standard output stream buffering
If MODE is 'L' the corresponding stream will be line buffered.