Perl : un one-liner - I
Voici le début d'une série de one-liners en Perl.
C'est un spécial "Mac OS X". Je m'explique. Vous avez un fichier ASCII qui déboule d'un Mac quelconque (pas sous OS 9 quand même) et vous voulez le récuperer sous un Unix quelconque ? Problème, les caractères de fin de ligne ne correspondent pas et vous êtes avec plein de "^M" en fin de ligne.
On envoie donc :
drzz@hanouka:~$ perl -pi -e "s/\r/\n/g" <nom_du_fichier>
On a juste substitué le caractère de fin de ligne "\r" par "\n" pour être total Unix. Pour celles et ceux pas trop familiers avec les options en ligne de commande sous Perl, les voici :
- -e : c'est pour exécuter l'option directement sur la ligne de commande sans préciser de nom de fichier de script (comme la lettre le laisse entendre);
- -pi : cette option permet grâce au "p" de créer une boucle comme :
while (<>) { s/\r/\n/g; } continue { print; # l'option "-i" permet d'écrire dans le fichier au nom original }(remarquer l'équivalence du script entre les deux premières accolades) pour traiter chaque ligne et renvoyer le retour dans le même fichier (option "-i"; on est ici très proche de sed;
Bon, j'espère que c'est clair, en tout cas, je m'en sers assez souvent.
tags : Perl, one-liner
mis en ligne : Sun Dec 20 16:18:52 CEST 2009