Esta linha sed deve fazer o truque:
sed -i '/^$/d' file.txt
O -i significa que irá editar o arquivo no local.
Como faço para remover linhas vazias / em branco (incluindo espaços apenas) em um arquivo no Unix / Linux usando a linha de comando?
conteúdo do arquivo.txt
Line:Text
1:<blank>
2:AAA
3:<blank>
4:BBB
5:<blank>
6:<space><space><space>CCC
7:<space><space>
8:DDD
saída desejada
1:AAA
2:BBB
3:<space><space><space>CCC
4:DDD
Esta linha sed deve fazer o truque:
sed -i '/^$/d' file.txt
O -i significa que irá editar o arquivo no local.
sed '/^$/d' file.txt
d é o comando sed para excluir uma linha. ^$ é uma expressão regular que corresponde apenas a uma linha em branco, um início de linha seguido por um final de linha.
Você pode usar a opção -v com o grep para remover as linhas vazias correspondentes.
Como isso
grep -Ev "^$" file.txt
grep Solução simples usando o comando grep :
grep . file
Para remover linhas vazias, você pode inserir novas repetições de linha com tr :
cat file.txt | tr -s '\n' '\n'
Aqui está uma solução awk :
awk NF file
Com Awk, NF é definido apenas em linhas não-brancas. Quando essa condição corresponde, a ação padrão do Awk é imprimir a linha inteira.
Aqui está o método usando o ex editor (parte do Vim):
ex -s +'v/\S/d' -cwq test.txt
Para vários arquivos (editar no local):
ex -s +'bufdo!v/\S/d' -cxa *.txt
Observação: o comando :bufdo não é POSIX .
Sem modificar o arquivo (basta imprimir na saída padrão):
cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin