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