En Perl, comment faire pour supprimer les ^M à partir d'un fichier?
J'ai un script qui ajoute de nouveaux champs à un CSV, cependant ^M
personnages font leur apparition à la fin de l'ancien lignes de sorte que le nouveau champs se retrouvent sur une nouvelle ligne au lieu de le même. Comment puis-je supprimer ^M
caractères à partir d'un fichier CSV à l'aide de Perl?
- Utilisation
binmode(STDIN, ":crlf")
ouPERLIO=:unix:crlf
(voir [stackoverflow.com/a/21320709/424632]).
Vous devez vous connecter pour publier un commentaire.
^M est de retour chariot. Vous pouvez faire ceci:
Ou un 1-liner:
Vous avez trouvé, vous pouvez aussi faire ceci:
\r
- toute personne cherchant à qui (ou à vous-même dans un an) serait content de faire un commentaire en précisant ce qu'il faitLégèrement non, mais de supprimer les ^M de la ligne de commande à l'aide de Perl, faites ceci:
Je préfère un cadre plus général de solution qui fonctionne avec le ms-DOS ou Unix entrée. En supposant que l'entrée est à partir de STDIN:
Ce un liner remplace toutes les ^M caractères:
Vous pouvez appeler à partir de l'intérieur de Perl ou directement sur votre Unix invite.
Pour convertir DOS, style style UNIX fins de ligne:
Ou, pour supprimer UNIX et/ou de DOS, style de fin de ligne:
C'est ce qui a résolu mon problème. ^M est un retour chariot, et il peut être facilement évité dans un script Perl.
Petit script que j'ai pour que. Une modification de il a aidé à filtrer certains autres caractères non-imprimables dans la croix-plate-forme des dossiers de legs.
En vi frappé
:
.Puis
s/Control-VControl-M//g
.Control-V
Control-M
sont évidemment ces touches. Ne pas le préciser.