web-dev-qa-db-fra.com

Comment convertir les pauses de ligne dans un fichier texte entre les formats Windows et Unix / Linux?

Comment convertir les pauses de ligne dans un fichier texte entre les formats Windows et Unix/Linux?

J'ai un environnement * Nix, mais j'ai besoin d'importer et d'exporter des données avec les pauses de la ligne de style Windows. Je pensais qu'il y aurait une utilité ou un commandement standard pour le faire, mais je n'arrive pas à le trouver.

33
alexeit

Vous recherchez probablement dos2unix, unix2dos, todos ou fromdos selon votre distribution. Ubuntu/Debian Package todos/fromdos dans le cadre du package tofrodos de la mémoire.

42
saschabeaumont

Une option est d'utiliser unix2dos (Et dos2unix Pour y retourner) sur la ligne de commande.

Un autre est d'utiliser un éditeur de texte:
[.____] Pour VI:: Définissez FF = DOS pour définir les fins de la ligne pour être des terminaisons de ligne DOS.
[.____] pour EMACS: C-X [ENTER] F DOS [ENTER]

Pour votre éditeur basé sur l'interface graphique préférée (par exemple, Jedit), je vous recommande de vérifier le manuel ou Google.

Enfin, si vous ne voulez pas faire face à un éditeur de texte et simplement le faire en utilisant des utilitaires plus courants et de tels analyses (ou ne disposez pas d'UNIX2DOS installé):

tr -d '\r' < infile > outfile Pour aller de Windows -> Unix
[.____] awk 'sub("$", "\r")' unixfile.txt > winfile.txt Pour aller d'UNIX -> Windows comme tr ne peut pas aller d'UNIX à Windows.

24
Chealion

Modifiez-le dans Vim et utilisez le set fileformat commande.

  • MS-DOS/Windows (CR + LF PAISSONS) TO * NIX (LF SEULEMENT SEULEMENT)

    :set fileformat=unix
    :wq
    
  • * Nix à MS-DOS/Windows

    :set fileformat=dos
    :wq
    
13
nedm

C'est ce que j'utilise, semblable à la chélion, pour convertir Windows en fins de ligne UNIX:

tr -d \\015 < windows > unix
8
Josh

Faire cela avec Posix est délicat:

  • POSIX SED ne supporte pas \r ou \15. Même s'il l'a fait, l'option en place -i n'est pas posix

  • POSIX AWK Soutenir \r et \15, Cependant, le -i inplace option n'est pas posix

  • D2U et Dos2unix ne sont pas POSIX UTILITIS , mais EX est

  • POSIX EX ne prend pas en charge \r, \15, \n ou \12

Pour supprimer les retours de chariot:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

Pour ajouter des retours de chariot:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
1
Steven Penny