Sua segunda solução sed
deve funcionar bem em quase todos os casos, mas aqui estão algumas outras soluções apenas porque:
file.log
:
$ cat file.log
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
Empty line before-801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
Space before-801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
Tab before-801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
a linha dois é uma linha completamente vazia, a linha 4 tem um espaço, a linha 6 tem uma guia
sed
:
sed '/^$/d' file.log
$ sed '/^$/d' file.log
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
Empty line before-801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
Space before-801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
Tab before-801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
Como mostrado acima, isso não removerá as linhas que contêm espaço em branco
sed '/^\s*$/d' file.log
$ sed '/^\s*$/d' file.log
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
Empty line before-801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
Space before-801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
Tab before-801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
Nota: a solução acima não parece funcionar com o BSD sed
sed '/^[[:space:]]*$/d' file.log
$ sed '/^[[:space:]]*$/d' file.log
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
Empty line before-801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
Space before-801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
Tab before-801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
Esta solução deve funcionar tanto com o GNU quanto com o BSD sed
awk
:
awk 'NF' file.log
$ awk 'NF' file.log
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
Empty line before-801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
Space before-801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
Tab before-801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
Isto não modifica no lugar, mas se você tiver o GNU awk, você pode usar o seguinte
awk -i inplace 'NF' file.log
grep
:
grep -v '^$' file.log
$ grep -v '^$' file.log
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
Empty line before-801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
Space before-801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
Tab before-801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
Como mostrado acima, isso não removerá as linhas que contêm espaço em branco. Além disso, isso não modificará o arquivo em vigor
grep . file.log
$ grep . file.log
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
Empty line before-801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
Space before-801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
Tab before-801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
Como mostrado acima, isso não removerá as linhas que contêm espaço em branco. Além disso, isso não modificará o arquivo em vigor
grep -v '^\s*$' file.log
$ grep -v '^\s*$' file.log
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
Empty line before-801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
Space before-801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
Tab before-801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
Isto não modificará o arquivo, mas um redirecionamento poderá ser usado para criar um novo arquivo com o conteúdo desejado
tr
:
tr -s '\n' <file.log
$ tr -s '\n' <file.log
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
Empty line before-801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
Space before-801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
Tab before-801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
Como mostrado acima, isso não removerá as linhas que contêm espaço em branco. Além disso, isso não modificará o arquivo em vigor
perl
:
perl -n -e "print if /\S/" file.log
$ perl -n -e "print if /\S/" file.log
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
Empty line before-801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
Space before-801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
Tab before-801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
Para modificar no lugar, use o seguinte:
perl -i.bak -n -e "print if /\S/" file.log