J'ai besoin d'un utilitaire / script de conversion qui convertira un fichier de vidage .sql généré sur Mac en un fichier lisible sur Windows. C'est la continuation d'un problème que j'ai eu ici . Le problème semble être lié au formatage de nouvelle ligne dans les fichiers texte, mais je ne trouve pas d'outil pour effectuer la conversion ...
133
Réponses:
Windows utilise
carriage return
+line feed
pour la nouvelle ligne:Unix utilise uniquement
Line feed
pour la nouvelle ligne:En conclusion, remplacez simplement chaque occurrence de
\n
par\r\n
.Les deux
unix2dos
etdos2unix
ne sont pas disponibles par défaut sur Mac OSX.Heureusement, vous pouvez simplement utiliser
Perl
oused
pour faire le travail:Extrait de code de:
http://en.wikipedia.org/wiki/Newline#Conversion_utilities
la source
sed
commande UNIX vers DOS ne fonctionne pas pour moi sous OS X Lion - elle insère simplement le texte "r" à la fin de chaque ligne. Laperl
commande fonctionne cependant.sed
, mais vous pouvez le contourner sans installer Homebrew, gnu-sed ou unix2dos: Utilisezsed -e 's/$/^M/' inputfile > outputfile
, où^M
est un caractère de contrôle produit sur la ligne de commande viaCtrl+V Ctrl+M
.$
avant le guillemet simple contenant la commande sed:sed $'s/\r$//'
Explication: bash décode les échappements anti-slash en$'...'
chaînes. Voir gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html pour plus de détails.Ceci est une version améliorée de la réponse d'Anne - si vous utilisez perl, vous pouvez faire l'édition sur le fichier `` sur place '' plutôt que de générer un nouveau fichier:
la source
Can't do inplace edit on file: Permission denied.
et supprimer le fichier. Regardez plutôt dans d'autres utilitaires.Vous pouvez installer unix2dos avec Homebrew
Ensuite, vous pouvez faire ceci:
Vous pouvez également convertir des fichiers dos en unix:
la source
dos2unix
. Vous voudrezbrew install dos2unix
.brew install unix2dos
oubrew install dos2unix
fonctionne bien. Ils installent le même package. Utilisez le nom qui vous parle :)port install dos2unix
.Vous voulez probablement unix2dos :
Vous pouvez exécuter
unix2dos
sur votre machine DOS / Windows en utilisant cygwin ou sur votre Mac en utilisant MacPorts .la source
tr
Supprimez simplement :la source
wc -l
).tr
commande pour effectuer diverses conversions. Utilisezhexdump
ou similaire pour savoir exactement quelle sorte de convention de fin de ligne est maintenant utilisée dans le fichier.find ./ -type f -exec dos2unix {} \;
pour convertir récursivement toutes les fins de ligne dans le dossier actuella source
vim
peut également convertir des fichiers du format UNIX au format DOS. Par exemple:la source
Ce qui suit est un script complet basé sur les réponses ci-dessus avec la vérification de la cohérence et fonctionne sur Mac OS X et devrait également fonctionner sur d'autres systèmes Linux / Unix (bien que cela n'ait pas été testé).
la source
Voici une approche très simple, qui a bien fonctionné pour moi, avec la permission du Weblog de Davy Schmeits :
Où foo est le fichier qui a les caractères Control + M à la fin de la ligne, et foo2 le nouveau fichier que vous créez.
la source
Sur Yosemite OSX, utilisez cette commande:
où la
^M
séquence est réalisée en appuyant sur Ctrl+ Vpuis Enter.la source
sed
ne comprennent antislash échappe par exemple\r
et `` \ n` et peut donc aussi utiliser dans la substitution. Vous n'avez pas besoin de saisir un contrôle-M littéral pour faire référence à ce caractère (ou à tout autre). Le principe d'utilisersed
(et-i
) pour effectuer toute sorte de conversion de ce type est très bon, car, contrairement à celatr
, vous n'êtes pas limité à «un caractère à la fois».Développant les réponses d'Anne et JosephH, en utilisant perl dans un court script perl, car je suis trop paresseux pour taper le perl-one-liner très souvent.
Créez un fichier, nommé par exemple "unix2dos.pl" et placez-le dans un répertoire de votre chemin. Modifiez le fichier pour qu'il contienne les 2 lignes:
En supposant que "which perl" renvoie "/ usr / bin / perl" sur votre système. Rendez le fichier exécutable (chmod u + x unix2dos.pl).
Exemple:
$ echo "hello"> xxx
$ od -c xxx (vérifiant que le fichier se termine par un nl)
0000000 bonjour \ n
$ unix2dos.pl xxx
$ od -c xxx (vérifiant qu'il se termine maintenant par cr lf)
0000000 bonjour \ r \ n
la source
Dans Xcode 9 dans le panneau de gauche, ouvrez / choisissez votre fichier dans le navigateur de projet . Si le fichier n'est pas là, déposez-le dans le navigateur de projet .
Sur le panneau de droite, recherchez Paramètres de texte et remplacez les fins de ligne par Windows (CRLF) .
Screendump XCode
la source