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