com awk :
awk -F '\|' '$3==""' file.txt
-
-F '\|'define o delimitador de campo como literal| -
$3==""verifica se o terceiro campo é nulo, se for o caso, imprime o registro (padrão)
Exemplo:
% cat file.txt
A|B|C|D|E
A|B|C|D|E
A|B||D|E
% awk -F '\|' '$3==""' file.txt
A|B||D|E
Na verdade, você não precisa do escape, pois quando há apenas um caractere é usado como separador de campo, ele é literalmente ordenado; Graças a @ Stéphane Chazelas:
awk -F '|' '$3==""' file.txt