Création
d'entreprise
Posez votre question Signaler

[PERL] Remplacer retour chariot par espace

F_Pignon 23Messages postés 25 septembre 2007Date d'inscription - Dernière réponse le 25 juin 2010 à 13:38
Bonjour tout le monde,
Je réactualise la discussion:
http://www.commentcamarche.net/forum/affich 4375050 remplacer un retour a la ligne par un espace
pour une question toute bête mais qui ne fonctionne visiblement pas dans mon cas
Je voudrais trouver un moyen de remplacer les retour chariot par des espaces à partir d'un script perl
Mon fichier est de type :
ligne1
ligne2
ligne3
etc.

et j'aurais besoin de récupérer :
ligne1 ligne2 ligne3 etc

les propositions de la discussion qui portait déjà sur le sujet suggérait des commandes essentiellement en ligne de commande, dont celle de lami20j :
 perl -pe 's/\n/ /g' fichier 

qui fonctionne très bien (tant qu'on reste en ligne de commande)
Sauf que quand je met cette même commande dans mon script :
Extrait :
(...)
while(<FIC>){
   $ligne=$_;
   $ligne=~s/toto/titi/g;
   $ligne=~s/tata/tutu/g;
   ...
   $ligne=~s/\n/ /g;
}
(...)

ça ne fonctionne plus... :( et j'ai essayé avec tr ($ligne=~tr/\n/ /g;) mais en vain..
(et je n'ai aucun message d'erreur ; mon fichier initial ne bouge pas)
et j'ai absolument besoin de faire cette opération dans le script même
Donc si quelqu'un pouvait m'aider ??
Merci d'avance !
Lire la suite 

[PERL] Remplacer retour chariot par espace »

3 réponses
Réponse
+0
moins plus
Salut,
lami20j@debian:~/trash$ cat fic.txt
ligne1
ligne2
ligne3
etc.

lami20j@debian:~/trash$ cat f_pignon.pl
#!/usr/bin/perl -i.orig
use strict;use warnings;

@ARGV = ("fic.txt");

while(<>){
  next if /^$/;
  s/\n/ / and print;
}
__END__
lami20j@debian:~/trash$ perl f_pignon.pl
lami20j@debian:~/trash$ cat fic.txt
ligne1 ligne2 ligne3 etc. lami20j@debian:~/trash$ cat fic.txt.orig
ligne1
ligne2
ligne3
etc.

lami20j@debian:~/trash$
F_Pignon- 29 mai 2008 à 00:01
Salut lami20j


merci bcp

je pense que ça vient du next if... je vas tester
Ajouter un commentaire
Réponse
+0
moins plus
Sous windows le retour chariot est le crfl donc le substituer comme ceci arange tout :-)

s/\r\n//g;
Ajouter un commentaire
Ce document intitulé « [PERL] Remplacer retour chariot par espace » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?