Bonjour,
J'aimerai savoir comment rajouter un retour chariot en fin de fichier uniquement.
Merci pour votre aide.
Bonjour,
J'aimerai savoir comment rajouter un retour chariot en fin de fichier uniquement.
Merci pour votre aide.
echo "" >> fichier
Tu tiens vraiment à le faire en perl ?
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Bonjour,
Et je ne pense pas que sa question soit si simple.
Ne faudrait-il pas se poser les questions suivantes:
-Le retour chariot concerne quel type de format de fichier (dos,mac,unix) ?
-Si ce retour chariot est déjà présent, doit on quand même le rajouter ?
Cordialement.
effectivement, je souhaiterai faire un retour chariot en perl si celui ci n'est pas déjà présent !!
Merci pour vos réponses.
le retour chariot concerne aussi bien des fichiers issus de Mac, Windows ou Unix !
Merci pour votre aide.
Essaie ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -pi.bak -e '$last_line = $_; END { print "\n" unless $last_line =~ /\n$/;} ' nom_fichier.txt
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
et à travers un script , ça donne quoi ?
Tu peux essayer quelque chose comme ça:
A lancer comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 use strict; use warnings; my $last_line; while (<>) { print; $last_line = $_; } print "\n" unless $last_line =~ /\n$/;
Ou, si tu préfères, tu ouvres explicitement les fichiers en entrée et en sortie avec la syntaxe que tu connais déjà, et tu lis et écris sur les filehandles respectivement obtenus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl script.pl fichier_entree > fichier_sortie
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Le retour chariot sous unix => '\n'
Le retour chariot sous windows => '\r\n'
Le retour chariot sous mac => '\r'
Donc, la question est de savoir si tu veux le retour chariot selon le format du fichier ou un bien précit ?
Quel est l'utilité et/ou la finalité ?
Si tu es sous linux, je te conseillerais plutot une commande tel que "ex" au lieu de perl qui fera très bien le travail:
Ici, la commande rajoutera le retour chariot à la fin du fichier "plop" si celui-ci n'existe pas et en principe respectera le format du fichier (unix,windows ou mac).
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ ex -s -c ':wq' plop
Cordialement.
Oui, mais en Perl, le retour chariot est codé "\n", quel que soit le système.
Si tu imprimes "toto\n" sous Windows, Perl, sachant qu'il tourne sous Windows, mettra lui-même le "\r" en plus. Et bien que je n'aie jamais utilisé Perl sous Mac, je suis convaincu que Perl transformera le "\n" en "\r" (encore que je me demande si ça n'a pas changé sous les versions récentes de Mac). Mais, bon, bref Perl s'adapte au système d'exploitation sur lequel il tourne. Donc, en principe pas de problème tant que Perl tourne sur la plateforme sur laquelle le fichier sera utilisé.
Là où l'on commence à avoir des problèmes, c'est quand on utilise un fichier généré (par Perl ou autre programme ou langage) sur une autre plateforme. Si le fichier est transféré par FTP en mode ASCII, FTP se charge généralement de bien faire la conversion. Mais s'il est transféré d'une autre façon (FTP en mode binaire, SFTP, transfert binaire d'un ZIP, etc.), alors il y a de fortes chances qu'il faille faire une conversion supplémentaire (avant ou après le transfert) pour ajouter ou retirer ou modifier les caractères de fin de ligne, ce qui n'est pas forcément compliqué: voici par exemple un alias dos2unix en Perl:
et un unix2dos:
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -pi.bak -e 's/\r//g;'
Ou, si je sais que mon fichier généré sous Unix ou Linux sera utilisé sous Windows et que le transfert ne fera pas la conversion, alors j'ajoute directement les "/r" nécessaires. Mais cela n'est pas toujours possible: sous Windows, il n'est pas possible à ma connaissance d'empêcher l'insertion des "\r" si le fichier doit être utilisé sous Unix. Une conversion après coup est nécessaire. Et je n'évoquerais même pas les autres systèmes d'exploitation sur lesquels je travaille aussi, comme VMS...
Code : Sélectionner tout - Visualiser dans une fenêtre à part perl -pi.bak -e 's/\n/\r\n;'
Rien de bien compliqué, donc, mais c'est tout de même assez rageant de constater à l'issue d'un traitement durant deux ou trois heures qu'il n'a rien fait à cause de ce genre de problème (ou, pire, qu'il a fou*u le souk dans une base de données). Je sais de quoi je parle, j'ai vécu plus d'une fois ce genre de désagrément.
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
La conversion dos2unix par exemple (ou mac2unix, ou l'inverse) ne fait pas que le traitement des retours chariot, il peut aussi faire de la conversion de locale mais bon là on sort du sujet.
Sinon, il m'arrive d'utiliser perl sous cygwin, et dans ce cas, le retour chariot reste par défaut de type unix.
Je suggérais juste que si on était sous linux, la commande 'ex' (qui n'est en fait que vim "en mode commande"), reconnait le type de fichier et donc peut rajouter le bon type de retour chariot sans changer le format de celui-ci (Bien sur, il y a aussi moyen de forcer le type et donc de changer le format).
Après, je suis d'accord, que si ses fichiers doivent être au format de l'OS cible, il faudra passer par une phase de conversion, puis rajouter ce fameux retour chariot.
Cordialement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager