Come cambiare la terminazione di riga di Windows alla versione Unix

Abbiamo 10 PC con alcune versioni di Ubuntu e solo accesso remoto. Pur facendo alcuni aggiornamenti al software personalizzato, non ho notato che le terminazioni di riga in alcuni script erano la versione di Windows (CR + LF) e non la versione Unix (LF). Così ora, quando voglio lanciare lo script, dà un errore:

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

C’è un modo per cambiare tutte le terminazioni di linea in uno script dal terminale. Il fatto è che non posso installare alcun nuovo software per questo gruppo di PC.

Opzione 1: dos2unix

È ansible utilizzare il programma dos2unix , che è specificamente progettato per questo:

 dos2unix file.txt 

sostituirà tutto il CR da tutte le linee, operazione sul posto.

Per salvare l’output in un file diverso:

 dos2unix -n file.txt output.txt 

Potrebbe essere necessario installarlo prima da:

 sudo apt-get install dos2unix 

Opzione 2: sed

Oppure puoi usare sed per sostituire tutti i CR ( \r ) dalle terminazioni di riga:

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

Con l’opzione -i , il file verrà modificato sul posto e il file originale verrà sottoposto a backup come file.txt.bak .