[PERL] Remplacer retour chariot par espace

F_Pignon Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
 Zoubouloune -
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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   Statut Membre Dernière intervention   1
 
Salut lami20j


merci bcp

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

s/\r\n//g;
0