Maneira mais rápida e mais central de substituir "\ r \ n" por "\ n" em um arquivo?

11

Suponho que trseja um método mais básico e, portanto, provavelmente uma maneira mais rápida de substituir as coisas em um determinado arquivo.

No entanto, tr só pode substituir quantidades iguais de caracteres. significado...

2 caracteres só podem ser substituídos por 2 caracteres, o que significa substituir

\r\ncom \nestá fora de questão viatr

é a próxima melhor opção sed?

é sed o mais central e mais rápida maneira de substituir \r\ncom \nem um arquivo dada a falta de capacidades em tr?

gostaria de um exemplo, se possível.

user73235
fonte
O que exatamente significa "Most Core"?
Keith Thompson

Respostas:

23

Com sed, você pode fazer:

sed 's/\r$//'

Da mesma maneira que trvocê pode remover, você só precisa remover \r:

tr -d '\r'

embora isso remova todas as instâncias de \r, não necessário seguido por \n.

cuonglm
fonte
2
Esses dois não são idênticos. O primeiro substitui '\ r \ n' por '\ n' (efetivamente), mas o segundo remove todos os '\ r' onde quer que apareçam. É incomum que o retorno de carro apareça em um arquivo de texto, exceto no final da linha, mas isso pode acontecer.
AMS
4

OU use dos2unix

por exemplo:

$ echo -ne "1\r\n2" |  od -A n -t x1
 31 0d 0a 32
$ echo -ne "1\r\n2" | dos2unix | od -A n -t x1
 31 0a 32

podemos ver substituir \r\npor\n

بارپابابا
fonte
Este não é um programa da lista de OP, mas, na minha opinião, a maneira mais limpa de fazer o trabalho. Eu pessoalmente o uso toda vez que preciso dessa conversão.
рüффп