Tente com este:
awk '$7!=""' file > final_output
Eu quero excluir as linhas contendo campos vazios na última linha $ 7
Arquivo:
1 1479870 5022248660 1 40001 189445122 740020
1 1911574 3015889020 1 33001 162049034 633004
1 1569783 5029193930 1 22001 133687297 522216
1 2069616 1025856960 2 25001 185608704
1 1741598 5021128160 1 44001 164870942 644027
1 1052941 5020319300 1 10001 156161802 610007
1 1686734 5020347480 1 13001 131405824 513304
1 1872263 5029089700 1 23001 185092353 723017
Saída desejada:
1 1479870 5022248660 1 40001 189445122 740020
1 1911574 3015889020 1 33001 162049034 633004
1 1569783 5029193930 1 22001 133687297 522216
1 1741598 5021128160 1 44001 164870942 644027
1 1052941 5020319300 1 10001 156161802 610007
1 1686734 5020347480 1 13001 131405824 513304
1 1872263 5029089700 1 23001 185092353 723017
Se os campos estiverem separados por um caractere de espaço, ao contrário de qualquer sequência de caracteres em branco, se
1 2 4 5 6 7
É uma linha que tem um 7º campo, mas não um 3º campo, você faria:
awk -F '[ ]' '$7 != ""' < file > final_output
[ ]
é uma expressão regular que corresponde ao caractere de espaço. Não usamos -F ' '
como um único espaço, pois o separador de campo tem um significado especial (fornece o comportamento padrão de divisão de campo onde qualquer seqüência de um ou mais caracteres em branco atuam como um separador e líder e espaços em branco são ignorados).