[PERL] Remplacer retour chariot par espace

Fermé
F_Pignon Messages postés 23 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mai 2008 - 28 mai 2008 à 21:41
 Zoubouloune - 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 !
A voir également:

2 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
28 mai 2008 à 22:50
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$
0
F_Pignon Messages postés 23 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 29 mai 2008 1
29 mai 2008 à 00:01
Salut lami20j


merci bcp

je pense que ça vient du next if... je vas tester
0
Zoubouloune
25 juin 2010 à 13:38
Sous windows le retour chariot est le crfl donc le substituer comme ceci arange tout :-)

s/\r\n//g;
0