Sed: avec variable et quotes

Résolu/Fermé
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 11 mars 2008 à 11:54
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 - 11 mars 2008 à 12:17
Bonjour,

J'ai un fichier contenant :

aaa
bbb
ccc

Je fais : sed 's/^bbb$//g;/./!d' fichier

J'obtiens bien :
aaa
ccc

En revanche si je fais :
toto="bbb";sed 's/^$toto$//g;/./!d' fichier
ca ne marche pas :
aaa
bbb
ccc
Avec les doubles quotes:
toto="bbb";sed "s/^$toto$//g;/./!d" fichier
-bash: !d": event not found

Comment que se fait-ce ? :-)

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
11 mars 2008 à 12:13
Salut,
toto="bbb";sed 's/^'"$toto"'$//g;/./!d'
Voir dans la FAQ : SED - The Stream EDitor - Part II - Le remplacement de variables

;-))
4
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 mars 2008 à 12:17
Salut,

sinon, comme ça (mais la solution donnée par jipicy est meilleure)
root@debian:~# cat tlep.txt
aaa
bbb
ccc
root@debian:~# toto="bbb";sed -e "s/^$toto$//g" -e '/./!d' tlep.txtaaa
ccc
root@debian:~#
1
tlep Messages postés 596 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 25 octobre 2012 118
11 mars 2008 à 12:17
Merci une nouvelle fois :-)
0