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.
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.
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.
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
C'est ce que j'utilise, semblable à la chélion, pour convertir Windows en fins de ligne UNIX:
tr -d \\015 < windows > unix
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