substituir nova linha por nul

3

bash, os oss mavericks

Eu quero substituir o caractere LF (hex = 0A ) por NUL (hex = 00 ) em um arquivo txt. posso usar grep ou tr ou algo para fazer isso? Eu tenho usado o bbedit para substituí-los, mas gostaria de algo que eu possa fazer rapidamente no bash.

    
por Terkey-Juice 30.03.2018 / 18:22

1 resposta

10

Sim, esse é um trabalho para tr :

tr '\n' '
tr '\n' '
tr '\n' '
tr '\n' '%pre%' < file 1<> file
' < file > file.new
' < file 1<> file
' < file > file.new

Ou no local:

%pre%

Aqui, o arquivo é escrito sobre si mesmo. Isso funciona porque estamos sempre escrevendo o máximo de dados que estamos lendo (e não sobrescrevemos dados que ainda não lemos). Se o processo tr for interrompido, ele poderá ser iniciado novamente para concluir o trabalho.

Ao contrário de perl -pi 's/\n/%code%/' , que preserva todos os atributos do arquivo e não quebra hardlinks ou links simbólicos e não precisa duplicar os dados no disco (a menos que haja alguma cópia em gravação por baixo).

    
por 30.03.2018 / 18:24