web-dev-qa-db-fra.com

Comment changer la fin de ligne de Windows en version Unix

Nous avons 10 PC avec une version d’Ubuntu et seulement un accès à distance. Lors de certaines mises à niveau de logiciels personnalisés, je n'ai pas remarqué que les fins de ligne de certains scripts étaient la version Windows (CR + LF) et non la version Unix (LF). Alors maintenant, quand je veux lancer le script, cela donne une erreur:

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

Existe-t-il un moyen de modifier toutes les fins de ligne dans un script à partir de terminal. Le fait est que je ne peux installer aucun nouveau logiciel sur ce groupe de PC.

17
NonStandardModel

Option 1: dos2unix

Vous pouvez utiliser le programme dos2unix, spécialement conçu pour cela:

dos2unix file.txt

remplacera tous les CR de toutes les lignes, opération en place.

Pour enregistrer la sortie dans un autre fichier:

dos2unix -n file.txt output.txt

Vous devrez peut-être d'abord l'installer en:

Sudo apt-get install dos2unix

Option 2: sed

Ou vous pouvez utiliser sed pour remplacer tous les CR (\r) des fins de ligne:

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

Avec l'option -i, le fichier sera édité sur place et le fichier d'origine sera sauvegardé sous le nom file.txt.bak.

34
heemayl