J'ai un fichier qui n'utilise que \n
pour les nouvelles lignes, mais j'en ai besoin \r\n
pour chaque nouvelle ligne. Comment puis-je faire ceci?
Par exemple, je l'ai résolu dans Vim en utilisant :%s/\n/\r\n/g
, mais je voudrais utiliser un script ou une application en ligne de commande. Aucune suggestion?
J'ai essayé de chercher cela avec sed
ou grep
, mais j'ai été immédiatement confus par les solutions de contournement de la séquence d'échappement (je suis un peu vert avec ces commandes).
Si vous êtes intéressé, l'application est liée à ma question / réponse ici
CR
avant chaque LF, seulement avant les LF qui ne sont pas déjà précédés d'un (et d'un seul) CR.'\r'
avecsed
le truc.C'est exactement ce que
unix2dos
fait:Cela remplacera
file.txt
en place une version avec des fins de ligne CRLF.Si vous voulez le faire avec
sed
, vous pouvez insérer un retour chariot à la fin de chaque ligne:Cela remplace (
s
) la zone de taille nulle juste avant la fin de la ligne ($
) par\r
. Pour effectuer un remplacement sur place (comme leunix2dos
fait), utilisezsed -i.bak
, bien qu'il s'agisse d'une extension non standard - si vous ne l'avez pas, utilisez un fichier temporaire.la source
\r
en remplacement n'est pas portable. Au moins, cela ne fonctionnera pas sous Mac OSX.u2d
,ux2dos
, destodos
commandes autour aussi.Si vous effectuez la conversion sur une machine Unix (OS X, Linux), ouvrez le fichier avec
vi
ouvim
:appuyez sur la touche ÉCHAP pour vous assurer que vous n'êtes pas en mode insertion, puis tapez
ou
Cela effectue la conversion en place en définissant le format de fichier.
Pour écrire le fichier et quitter l'éditeur, utilisez
Sur la ligne de commande, vous pouvez faire
la source
Faire cela avec POSIX est délicat:
POSIX Sed ne prend pas en charge
\r
ou\15
. Même si c'est le cas, l'option en place-i
n'est pas POSIXPOSIX Awk ne prend pas en charge
\r
et\15
, cependant, l'-i inplace
option n'est pas POSIXd2u et dos2unix ne sont pas des utilitaires POSIX , mais ex est
Ex Posix ne supporte pas
\r
,\15
,\n
ou\12
Pour supprimer les retours chariot:
Pour ajouter des retours chariot:
la source
Une fonction shell portable qui fera cela:
Avec cela, vous pouvez faire:
la source
Dans awk, vous pouvez essayer
Ou
Le
$'\r'
est un exemple de style ANSI-C citant comme soutenu par quelques obus commeksh93
,bash
,zsh
,mksh
et FreeBSDsh
et susceptibles d'être inclus dans le numéro 8 de la Single Unix Specification .Il offre un moyen général d'exprimer des personnages étranges, essayez ceci, par exemple:
la source