Forum Programmation.shell Probleme avec la commande SED

Posté par  .
Étiquettes : aucune
0
25
oct.
2006
Bonjour à tous,

Je galére un peu avec la commande sed.
Voilà mon probléme :

Le fichier de départ peut varier:

DBPARAM_SEUIL_BAS=10
ou
DBPARAM_SEUIL_BAS=5
ou
DBPARAM_SEUIL_BAS=25 etc ...

Ce que je veux afficher dans tous les cas c'est :

DBPARAM_SEUIL_BAS=1000

J'ai essayé cette commande sed :

sed "s/^DBPARAM_SEUIL_BAS/DBPARAM_SEUIL_BAS=
1000/g" SecuBR.ini


Mais voilà le résultat obtenu :

DBPARAM_SEUIL_BAS=1000=10

Comment faire pour éviter ce problème ??

Merci d'avance

RV
  • # re: man regex ?

    Posté par  (site web personnel) . Évalué à 3.

    s/^DBPARAM_SEUIL_BAS.*$/DBPARAM_SEUIL_BAS=1000/g
  • # c'est marrant

    Posté par  . Évalué à 2.

    sed fait exactement ce que tu lui demandes...
    tu demandes de remplacer
    DBPARAM_SEUIL_BAS par DBPARAM_SEUIL_BAS=1000

    alors que tu voulais peut etre lui demander DBPARAM_SEUIL_BAS jusqu'a la fin de ligne
    je t'aide '.' est n'importe quel caracter
    [aIo+A-Z] est un ensemble matchant 1 caracter de cet ensemble ( attention le - détermine un range ( A-Z ) comprend tous les caracteres dont le code ASCII est compris entre A et Z
    sinon il y a quelques caractères qui en dehors de [] ont des signification différente
    $ fin de ligne
    ^ début de ligne

    ensuite il y a des modifieur

    + correspond a 1 occurence ou plus
    ? a 0 ou 1
    * de 0 a n

    Bon je ne vais pas en rajouter avec les parentheses, ni les autre subtilité du schmilbilc

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: c'est marrant

      Posté par  . Évalué à 1.

      Merci pour toutes ces informations, ça va bien me servir dans mes prochaines commandes sed :D

      RV
  • # substitution

    Posté par  . Évalué à 3.

    Ce que tu veux faire, c'est remplacer le groupe de chiffres après le = par 1000

    Et ce que tu fais, c'est remplacer DBPARAM_SEUIL_BAS par DBPARAM_SEUIL_BAS=1000

    Un solution :
    sed -e 's/^DBPARAM_SEUIL_BAS=[[:digit:]]\+$/DBPARAM_SEUIL_BAS=1000/'
    • [^] # Re: substitution

      Posté par  . Évalué à 2.

      Bon, trois réponses comparables en 2 minutes, ca le fait.
      Ceci dit, je suis extrèmement frustré d'avoir été le moins réactif des trois, alors j'en rajoute un peu :
      Il existe un outil assez pratique pour tester ses expressions rationelles : redet.

      C'est le plus pratique que je connaisse, mais c'est aussi parmis les interfaces les plus moches que j'aie jamais vues.
      • [^] # Re: substitution

        Posté par  . Évalué à 1.

        Merci pour l'info, je ne manquerai pas de tester cet outil ;-)
  • # Merci

    Posté par  . Évalué à 1.

    Merci à tous pour votre aide, toutes ces informations et la rapidité de vos réponses !

    RV

Suivre le flux des commentaires

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