Merci pour la bonne remarque.
En fait j'ai dit une betise.
C'est du awk et non du perl qui appel sed et tr
J'ai trouve une solution differente
system ("echo "line[nb_samp-1]" | tr -d '\r\n' | sed 's/[\\-]\\?[.0-9e]*[-+]\\?[0-9]*,[0-9]\\?.[0-9]*e\\?[-+]\\?[0-9]*$//' ")
===========================================================================
Patrick DUPRÉ | | email: pdupre@???
Laboratoire interdisciplinaire Carnot de Bourgogne
9 Avenue Alain Savary, BP 47870, 21078 DIJON Cedex FRANCE
Tel: +33 (0)380395988
===========================================================================
Sent: Sunday, July 21, 2019 at 10:44 AM
From: "Patrice Karatchentzeff" <patrice.karatchentzeff@???>
To: "Patrick Dupre" <pdupre@???>
Cc: guilde <guilde@???>
Subject: Re: perl/sed/tr
Salut
C'est bizarre de mettre du sed au milieu d'un script en perl... Perl le fait aussi bien tout seul... et tu perds beaucoup en perf en forkant vers le shell...
Pour répondre à ta question, tu peux inverser ta commande ( qui fait deux forks !)
my $sline = `head -n1 050618_C2H2_R2_0_25Pa_2.txt | tr -d '\r\n'`
puis
system (etc... ), $line
Mais honnêtement, c'est quasi illisible ton script et il sera inmaintenable...
Surtout que tu peux tout faire sur un seul commande en perl (ou en plusieurs pour rendre lisible et maintenable...)
Un truc qui peut t'aider :
http://articles.mongueurs.net/magazines/linuxmag55.html
Bonne chance
Le dim. 21 juil. 2019 à 01:29, Patrick Dupre <pdupre@???> a écrit :
Bonjour,
Dans un programme perl je peux faire
system ("sed 's/[\\-]\\?[.0-9e]*[-+]\\?[0-9]*,[0-9]\\?.[0-9]*e\\?[-+]\\?[0-9]*$//' <<< "line[nb_samp-1]" | tr -d '\n'")
sur un fichier linux (ou apres conversion d'un fichier dos2 unix)
Comme je veux eviter cette conversion, je fais :
system ("sed 's/[\\-]\\?[.0-9e]*[-+]\\?[0-9]*,[0-9]\\?.[0-9]*e\\?[-+]\\?[0-9]*$//' <<< "line[nb_samp-1]" | tr -d '\r\n'")
Mais cela ne fonctonne pas car la fin de ligne n'est pas detectee par sed
J'ai bien verifie avec:
head -n1 050618_C2H2_R2_0_25Pa_2.txt |tr -d '\r\n'| od -a
me suprime bien le \t\n caracteres de fin de ligne du dos.
ou
encore
sed 's/[\-]\?[.0-9e]*[-+]\?[0-9]*,[0-9]\?.[0-9]*e\?[-+]\?[0-9]*$//' <<< `head -n1 050618_C2H2_R2_0_25Pa_2.txt | tr -d '\r\n'`
fonctionne correctemnt.
Il faut donc que je fasse la meme chose depuis perl.
C'est-a-dire:
il faut forcer la commande
"line[nb_samp-1]" | tr -d '\r\n'
avant le sed
Mais je ne sais comment faire.
Merci d'avance
===========================================================================
Patrick DUPRÉ | | email: pdupre@???
Laboratoire interdisciplinaire Carnot de Bourgogne
9 Avenue Alain Savary, BP 47870, 21078 DIJON Cedex FRANCE
Tel: +33 (0)380395988
===========================================================================
--
|\ _,,,---,,_ Patrice KARATCHENTZEFF
ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff@???
|,4- ) )-,_. ,\ ( `'-'
'---''(_/--' `-'\_)