Suppression d'un slash entre single quote

Résolu/Fermé
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - Modifié le 11 sept. 2019 à 10:46
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 12 sept. 2019 à 11:26
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

jordane45 Messages postés 38315 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 novembre 2024 4 705
11 sept. 2019 à 10:51
Bonjour
Faut sûrement mettre in back slash devant ton slash dans la regex
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
11 sept. 2019 à 10:57
Bonjour Jordane,
j'ai essayé:
sed -i 's/NAME=\'\/',/NAME='',/g' test.txt

Mais ça ne fonctionne pas non plus...
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
Modifié le 11 sept. 2019 à 12:21
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
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
Modifié le 11 sept. 2019 à 12:31
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418 > Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
11 sept. 2019 à 13:07
$ sed '/NAME/{s#/#TOTO#}' fich 
blabla='xxx/xxx/xxx'
NAME='TOTO',
VAR='/mon/chemin/à/moi'
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
11 sept. 2019 à 13:16
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418 > Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
11 sept. 2019 à 13:25
Tu rajoutes l'option "-i" :
sed -i '/NAME/{s#/#TOTO#}' fich
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020
11 sept. 2019 à 13:50
Excellent ! merci beaucoup :-)
0