remove ^ M do solaris por perl one liner no mesmo arquivo

2

geralmente para remover o ^ M do arquivo que fazemos

dos2unix test.txt test.txt

tr -d '\r' < old.file > new.file

mas esta abordagem insiste em criar um novo arquivo

se não quisermos criar outro arquivo, a solução é: exemplo de perl one liner

perl -pi -e 's/^M//g' file1

Eu tentei no Solaris mas por razões obscuras, o ^ M ainda existe no arquivo?

por favor, avise o que está errado aqui

    
por maihabunash 16.03.2015 / 13:47

2 respostas

5

O Perl também precisa de \r .

perl -pi -e 's/^M//g' file1
               ^^ - should be \r

Embora, na verdade, você provavelmente apenas queira manter os finais de linha.

perl -pi -e 's,\r\n,\n,g' file1

Embora na verdade - você não precisa de perl para isso. sed é perfeitamente capaz:

sed -i.bak -e 's,\r\n$,\n,g' file1
    
por 16.03.2015 / 14:08
5

Você precisa usar \r , não ^M para corresponder aos caracteres de retorno de carro. ^M removeu todos os caracteres M no início da linha, então você pode querer verificar se seu arquivo ainda está OK ...

    
por 16.03.2015 / 14:08