qual comando é mais adequado para remover linhas em branco no arquivo de despejo hexadecimal, para unir as peças?
sed -i '/^$/d' file.log
sed -i '/^\s*$/d' file.log
ou talvez awk
?
801c3fb0: 0000 2821 0c18 9741 2406 0020 afb0 0010 | ..(!...A$.. ....
801c3fc0: 2402 0014 afa2 0038 8e22 00e4 2404 0064 | $......8."..$..d
801c3fd0: 0000 2821 03a0 3021 0040 f809 27a7 0038 | ..(!..0!.@..'..8
801c3fe0: 1040 001d 0040 9021 2630 0008 0200 2021 | .@...@.!&0.... !
801c3ff0: 0c0a 8935 2405 0002 5040 0064 0000 1021 | [email protected]...!
801c4000: 0200 2021 0c0a 8935 2405 0002 0200 2021 | .. !...5$..... !
801c4010: 0040 2821 2406 0002 3c07 8074 0c0a 86a5 | .@(!$...<..t....
801c4020: 24e7 10fc 0040 2021 3c05 8074 0c1b 634c | $....@ !<..t..cL
Sua segunda
sed
solução deve funcionar bem em quase todos os casos, mas aqui estão algumas outras soluções apenas porque:a linha dois é uma linha completamente vazia, a linha 4 tem um espaço, a linha 6 tem uma tabulação
sed '/^$/d' file.log
Como mostrado acima, isso não removerá as linhas que contêm espaços em branco
sed '/^\s*$/d' file.log
Nota: a solução acima não parece funcionar com BSD sed
sed '/^[[:space:]]*$/d' file.log
Esta solução deve funcionar com GNU e BSD sed
awk 'NF' file.log
Isso não se modifica no local, mas se você tiver o GNU awk, poderá usar o seguinte
grep -v '^$' file.log
Como mostrado acima, isso não removerá as linhas que contêm espaços em branco. Além disso, isso não modificará o arquivo no local
grep . file.log
Como mostrado acima, isso não removerá as linhas que contêm espaços em branco. Além disso, isso não modificará o arquivo no local
grep -v '^\s*$' file.log
Isto não irá modificar o ficheiro no local mas poderá ser usado um redireccionamento para criar um novo ficheiro com o conteúdo pretendido
tr -s '\n' <file.log
Como mostrado acima, isso não removerá as linhas que contêm espaços em branco. Além disso, isso não modificará o arquivo no local
perl -n -e "print if /\S/" file.log
Para modificar no local, use o seguinte:
A única diferença entre os dois
sed
comandos é que o segundo é responsável por espaços ou tabulações na linha em branco.Parece que seu arquivo tem espaços/tabulações nas linhas em branco e é por isso que o primeiro
sed
comando não os removeu.Use o segundo
sed
comando. Eu testei e confirmei que funciona com o seu arquivo.