130 votes

Préserver les fins de ligne

- Je exécuter sed pour faire une substitution sur windows et j'ai remarqué qu'il convertit automatiquement les fins de ligne Unix (\n). Est-il une option pour dire sed à utiliser Windows fins de ligne (\r\n) ou, encore mieux, pour préserver les fins de ligne dans le fichier?

Remarque: j'utilise sed de unxutils: http://unxutils.sourceforge.net/

171voto

Shlomo Points 466

Vous pouvez utiliser l' -b option pour la sed de l'avoir traiter le fichier en tant que fichier binaire. Cela permettra de résoudre le problème avec cygwin du sed sur Windows.

Exemple: sed -b 's/foo/bar/'

À partir de la page de man de sed:

-b --binary

Cette option est disponible sur toutes les plateformes, mais n'est efficace que lorsque le système d'exploitation fait une distinction entre les fichiers texte et les fichiers binaires. Lorsqu'une telle distinction est faite-comme c'est le cas pour MS-DOS, Windows, Cygwin, des fichiers de texte qui sont composées de lignes séparées par un retour chariot et un caractère de saut de ligne, et le sed ne pas voir la fin CR. Lorsque cette option est spécifiée, sed va ouvrir des fichiers d'entrée en mode binaire, donc ne demande pas à ce traitement spécial et compte tenu des lignes pour mettre fin à un saut de ligne.`

10voto

SiegeX Points 32614

Vous pourriez essayer de les sous l' \n pour \r\n à la fin de votre script existant comme suit:

sed 's/foo/bar/;s/$/\r/'

ou peut-être

 sed -e 's/foo/bar/' -e 's/$/\r/'

Si aucune de ces deux travaux, vous devrez consulter la page man spécifique à votre version de sed pour voir si une telle option existe. Notez que les *nix versions d' sed ne pas modifier la ligne de terminateurs sans être dit de le faire.

Une autre alternative est d'utiliser l' cygwin version sed qui ne devrait pas avoir ce comportement indésirable.

7voto

seeker Points 176

Sinon, (la version cygwin) perl -pe ne semble pas avoir ce problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X