Caso muito padrão, a solução mais simples com awk seria
awk -F: '$2 != ""' file
e com grep :
grep :. file
Eu queria saber se há algum comando para procurar valores de campo em branco de um arquivo de texto e remover a linha inteira.
Exemplo
Hello:Its Me
Hello:How are you
Hello:
Hello:Bye
E saída esperada
Hello:Its Me
Hello:How are you
Hello:Bye
Caso muito padrão, a solução mais simples com awk seria
awk -F: '$2 != ""' file
e com grep :
grep :. file
Se você quiser ignorar Hello: linhas, pode usar algo como:
awk -F: '{if($2 != "") print }' input_file
Pelo menos com o GNU awk, e acho que com qualquer versão do awk, a ação padrão quando algo é avaliado como true é imprimir. Portanto, se você definir o delimitador de campo como : , para imprimir linhas que tenham um segundo campo, tudo o que você precisa é:
$ awk -F: '$2' file
Hello:Its Me
Hello:How are you
Hello:Bye
No entanto, isso também imprimirá casos em que o segundo campo é espaço em branco (um espaço ou uma tabulação etc), mas não imprimirá a linha se o segundo campo for um ou vários 0 s , porque awk avalia isso como falso.
Às vezes, é mais fácil definir as condições de remoção ( grep -v ). Exemplo remove quando o último campo está vazio:
grep -v ':$' file
Tags grep text-processing awk cut