Suppression d'un slash entre single quote

Résolu
Ka-El Messages postés 279 Statut Membre -  
Ka-El Messages postés 279 Statut Membre -
Bonjour,
Je dispose d'un fichier "test.txt" qui est composé de la ligne suivante:
NAME='/',

Mon objectif est de supprimer le slash qui se trouve entre les singles quotes, soit:
NAME=' ',

Pour l'instant, j'ai testé la commande suivante, mais ça ne marche pas:
sed -i 's/NAME=\'/',/NAME='',/g' test.txt

Pourriez-vous svp m'apporter votre aide ?
Merci

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour
    Faut sûrement mettre in back slash devant ton slash dans la regex
    0
    1. Ka-El Messages postés 279 Statut Membre
       
      Bonjour Jordane,
      j'ai essayé:
      sed -i 's/NAME=\'\/',/NAME='',/g' test.txt

      Mais ça ne fonctionne pas non plus...
      0
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Il faut remplacer le délimiteur par défaut (le slash "/") par un caractère qu'on ne risque pas de rencontrer dans la cible recherchée, comme le croisillon (#) :

    $ cat fich 
    blabla='xxx/xxx/xxx'
    NAME='/',
    VAR='/mon/chemin/à/moi'


    $ sed '/NAME/{s#/##}' fich 
    blabla='xxx/xxx/xxx'
    NAME='',
    VAR='/mon/chemin/à/moi'


    Sinon, on ne met l'option "-i" qu'une fois qu'on est sûr de sa syntaxe ! ;-(

    0
    1. Ka-El Messages postés 279 Statut Membre
       
      Merci zipe31, effectivement ta suggestion fonctionne.
      En revanche, si je souhaite faire un remplacement, comment devrais-je procéder ?
      Par exemple, si je veux de ça:
      $ cat fich 
      blabla='xxx/xxx/xxx'
      NAME='/',
      VAR='/mon/chemin/à/moi'


      Aboutir à ça:
      $ cat fich 
      blabla='xxx/xxx/xxx'
      NAME='TOTO',
      VAR='/mon/chemin/à/moi'


      Merci d'avance pour ton aide :-)
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > Ka-El Messages postés 279 Statut Membre
       
      $ sed '/NAME/{s#/#TOTO#}' fich 
      blabla='xxx/xxx/xxx'
      NAME='TOTO',
      VAR='/mon/chemin/à/moi'
      0
    3. Ka-El Messages postés 279 Statut Membre
       
      Nickel ! :-)
      Par contre, comment on fait pour faire la modification directement dans le fichier "fich" ? (désolé je ne suis pas une flèche en shell...)
      0
    4. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > Ka-El Messages postés 279 Statut Membre
       
      Tu rajoutes l'option "-i" :
      sed -i '/NAME/{s#/#TOTO#}' fich
      0
    5. Ka-El Messages postés 279 Statut Membre
       
      Excellent ! merci beaucoup :-)
      0