Como alterar a finalização de linha do Windows para a versão Unix [duplicada]

9
    

Esta pergunta já tem uma resposta aqui:

    
  •              o que poderia fazer com que um script não consiga encontrar o python quando ele tiver '#! / usr / bin / env python' na primeira linha?                                      1 resposta                          
  •     

Temos 10 computadores com alguma versão do Ubuntu e somente acesso remoto. Ao fazer algumas atualizações para o software personalizado, eu não percebi que os finais de linha em alguns scripts eram a versão do Windows (CR + LF) e não a versão Unix (LF). Então agora, quando eu quero lançar o script, ele dá um erro:

bash: /usr/local/bin/portsee: /usr/bin/python^M: bad interpreter: No such file or directory

Existe uma maneira de alterar todos os finais de linha em um script do terminal. O problema é que não consigo instalar nenhum novo software neste grupo de PCs.

    
por NonStandardModel 26.07.2016 / 17:01

1 resposta

21

Opção 1: dos2unix

Você pode usar o programa dos2unix , projetado especificamente para isso:

dos2unix file.txt

substituirá todos os CR de todas as linhas, em operação local.

Para salvar a saída em um arquivo diferente:

dos2unix -n file.txt output.txt

Pode ser necessário instalá-lo primeiro por:

sudo apt-get install dos2unix

Opção 2: sed

Ou você pode usar sed para substituir todo o CR ( \r ) dos finais de linha:

sed -i.bak 's/\r$//' file.txt

Com a opção -i , o arquivo será editado no local e será feito o backup do arquivo original como file.txt.bak .

    
por heemayl 26.07.2016 / 17:04