ola
primeiramente, se este arquivo é importante, guarde uma copia.
segundo vc precisa definir o que seria um registro e o que seria um campo no seu arquivo.
vamos assumir que cada registro é separado por 'unix newline' e cada campo é separador por ; -- um arquivo csv.
de cara temos um problema que é o header. qualquer solução que possamos apresentar não pode tocar o cabeçalho do arquivo ( as vezes precisamos tomar precauções extras -- não parece ser o caso ).
existem duas abordagens.
1. vc imprime tudo MENOS o que não entra no padrão ( sed )
2. vc imprime APENAS o que entra no padrão ( awk , grep com algum cuidado )
e o padrão é: o primeiro campo não pode ser vazio.
aqui interessa perguntar: o que é um campo vazio? ele vai ter tamanho 0? ele pode ter um ou mais espaços em branco/tab/etc?
usar awk vai ser interessante pois vc preserva o arquivo original e gera um arquivo contendo apenas o que vc quer.
formato purista:
awk -F ';' 'NR == 1 { print } NR > 1 && length($1) > 0 { print }' arquivo.entrada > arquivo.saida
se isso não atende ao seu problema então alguma das premissas que eu assumi neste exemplo não funciona bem assim na pratica.
Abraços
Tiago