Se os campos nunca puderem conter espaço em branco, um campo vazio significa uma guia como primeiro caractere ( ^\t ), uma guia como o último caractere ( \t$ ) ou duas guias consecutivas ( \t\t ). Você poderia, portanto, filtrar as linhas contendo qualquer uma delas:
grep -Ev $'^\t|\t\t|\t$' file
Se você pode ter espaço em branco, as coisas ficam mais complexas. Se seus campos puderem começar com espaços, use isso (considera um campo com apenas espaços vazios):
grep -Pv '\t\s*(\t|$)|\t$|^\t' file
A alteração filtra as linhas que correspondem a uma guia, seguida de 0 ou mais espaços e, em seguida, outra guia ou o final da linha.
Isso também falhará se o último campo contiver apenas espaços. Para evitar isso também, use perl com as opções -F e -a para dividir a entrada na matriz @F , informando para imprimir a menos que um dos campos esteja vazio ( /^$/ ):
perl -F'\t' -lane 'print unless grep{/^$/} @F' file