Eu tenho um arquivo que está usando a notação unix para finais de linha e outro que está usando a notação do Windows.
Quando eu vi
o arquivo unix, não vejo nada no final da linha. Quando eu vi
o arquivo do windows eu vejo ^M
em azul
O problema é que, do meio para baixo, as linhas contêm não ^M
em azul (??).
Estou tentando converter o arquivo inteiro para ter ^M
em todas as linhas.
Eu tentei muitos comandos, mas este em particular
sed -e 's/$/^M/' < input.txt > output.txt
adicione "^M" como dois caracteres, não como Command-M
e faz isso também nas linhas que já possuem o ^M
caractere correto...
eu também tentei
sed -e 's/\r/^M/' < input.txt > output.txt
e
sed -e 's/\n/^M/' < input.txt > output.txt
sem sucesso...
emitindo um cat -e input.txt
, vejo isso nas ^M linhas corretas:
1895;2;3;5;10;14;34^M$
1896;3;6;14;15;21;25^M$
1897;9;22;25;47;52;58^M$
1898;12;34;45;53;55;58^M$
e isso nas incorretas
1899;20;23;35;36;44;48$
1900;8;11;27;28;43;46$
1901;11;12;26;30;37;53$
1902;02;07;09;18;21;25$
1903;09;10;15;28;43;45$
Como obtenho todas as linhas com o comando-m?
Se você tiver Perl, usar essa é a maneira mais fácil de evitar diferentes versões de
sed
etc.Ou no local:
Isso adicionará um retorno de carro ao final de todas as linhas, exceto aquelas que já possuem um. (Ou, na verdade, substitua zero ou um CR:s por um CR.)
Teste:
Acho que vi uma menção ao macOS em algum lugar. Se é isso que você está usando, o problema é que o
sed
que vem com ele não suporta metade das coisas que o GNU sed suporta. O do meu Mac não parece suportar\r
ou\xHH
...Mas você pode colocar um retorno de carro literal na linha de comando:
Não
^M
há os dois caracteres^
eM
, mas o único retorno de carro, que o shell (suponho que você tenha o Bash) exibe como^M
. Você precisa inserir o caractere comCtrl-VCtrl-MOu, alternativamente, faça com que o shell interprete o
\r
para você:(A
$'...'
sintaxe é suportada por quase todos os shells, mesmo não sendo padrão (pelo que entendi))unix2dos deve funcionar para você neste caso. No entanto, parece que você está usando o macOS, que não possui repositório para esse programa, sugiro o
sed -e 's/\n/\r\n/' < input.txt > output.txt
que é apenas um pouco menos conveniente.