Re: perl/sed/tr

Page principale

Répondre à ce message
Auteur: Patrice Karatchentzeff
Date:  
À: Patrick Dupre
CC: guilde
Sujet: Re: perl/sed/tr
Le dim. 21 juil. 2019 à 10:44, Patrice Karatchentzeff
<patrice.karatchentzeff@???> a écrit :
>
> 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@gmail.com
>      |,4-  ) )-,_. ,\ (  `'-'
>     '---''(_/--'  `-'\_)




-- 
      |\      _,,,---,,_           Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff@gmail.com
     |,4-  ) )-,_. ,\ (  `'-'
    '---''(_/--'  `-'\_)