Forum Programmation.shell truc bizarre avec un script

Posté par .
Tags : aucun
0
20
sept.
2007
conjour ,
j'ai un petit souci :
lorsque le lance un sed dans le shell ça fonctionne
par contre lorque je fait dans le shell " sed -i -r -e '/^[ ]*#\|^$\|^\n*$/! s/if_(..).*[a-zA-Z][0-9]*\.([a-z]).*[a-z]$/IF \U\1\E.\2/' mon_fichier " ben ça marche pas
c'est une commande qu devrait me transformer la chaine "if_lt r65.x, d55" en un chaine "IF LT.x"

exemple qui marche

$ A='if_lt r4.x, c0.b\nif_gt r5.w, c0.b'
$ echo -e $A | sed -r -e '/^[ ]*#\|^$\|^\n*$/! s/if_(..).*[a-zA-Z][0-9]*\.([a-z]).*[a-z]$/IF \U\1\E.\2/'
IF LT.x
IF GT.w



exemple qui marche pas

$ nano mon_fichier

if_lt r19.x, c0.z; # 0, 001

$ sed -i -r -e '/^[ ]*#\|^$\|^\n*$/! s/if_(..).*[a-zA-Z][0-9]*\.([a-z]).*[a-z]$/IF \U\1\E.\2/' mon_fichier
$ nano mon_fichier

if_lt r19.x, c0.z; # 0, 001

  • # simplifications...

    Posté par . Évalué à 3.

    pourquoi tu fais toujours des recherches compliqués (ecrites tordues)

    alors que depuis le debut on essaie de te montrer qu'on peut simplifier

    ainsi ton

    $ sed -i -r -e '/^[ ]*#\|^$\|^\n*$/ !s/if_(..).*[a-zA-Z][0-9]*\.([a-z]).*[a-z]$ / IF \U\1\E.\2 /' mon_fichier


    pourrait s'ecrire

    $ sed -i -r -e '/^[ |#|\n|\t]*$/ !s/if_(..).*[a-zA-Z][0-9]*\.([a-z]).*[a-z]$ / IF \U\1\E.\2 /' mon_fichier

    histoire d'y voir plus clair dans la recherche suppression des lignes vides, lignes de commentaires, retour à la ligne et ligne de tabulations

    ensuite ton expression ne trouve rien, donc ne remplace rien
    en effet quand tu fais le test avec le echo, tu n'as pas mis de suite à ta variable ( ; #le commentaire) donc le test fonctionne

    mais dans ton fichier de test, ben la ligne ne se finit pas apres la lettre.

    typique tu lui dis que ta ligne finie par une lettre [a-z]$
    alors qu'elle finit par lettre suivi du ; voire de commentaire

    donc le motif devrait etre :

    sed -r -e '/^[ |#|\n|\t]*$/d' -e 's/if_(..) [a-zA-Z][0-9]*\.([a-z]).*[a-z].*$/IF \U\1.\E\2/' fichier

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.