Você quer novas linhas. Então, crie novas linhas.
while read in; do sigtool --hex-dump "$in"; echo; done < file.txt > test.txt
Observe o comando echo
adicionado.
Lembre-se, o primeiro lugar que eu verificaria seria a página sigtool
man para ver se há uma opção para gerar novas linhas finais.
Ok, escrevi o acima sem realmente obter sigtool
(do pacote clamav
) e testando-o. Agora eu fiz isso.
O código que você escreveu não funciona, pelo menos não com o clamav-0.99.2-3.el6.x86_64. sigtool
aceita entrada em sua entrada padrão. Não tem opção de aceitar e traduzir argumentos de linha de comando.
Então, o que você realmente quer é voltar ao antigo editor não visual favorito ex
:
printf '%s\n' 'g/^/.!tr -d \n | sigtool --hex-dump' %p | ex file.txt > test.txt
Demonstração:
$ cat file.txt
string1
string2
string3
$ printf '%s\n' 'g/^/.!tr -d \n | sigtool --hex-dump' %p | ex file.txt > test.txt
$ cat test.txt
737472696e6731
737472696e6732
737472696e6733
$
Explicação:
Globalmente (para cada linha correspondente a regex /^/
, que é toda linha), filtre cada linha ( .!
) através do pipeline de shell tr -d \n | sigtool --hex-dump
e imprima ( p
) o buffer inteiro ( %
) à saída padrão e não salve as alterações em file.txt
.
Outra abordagem, usando o Awk:
awk -v p='sigtool --hex-dump' '
{printf "%s", $0 | p; close(p); printf "\n"}
' file.txt > test.txt