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.


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.


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


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.
рüффп
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.