Supprimer mot entre crochets en Shell
Résolu
sebcah
-
sebcah Messages postés 2 Statut Membre -
sebcah Messages postés 2 Statut Membre -
Salut !
Je chercher à supprimer en Shell le mot [nord] de la ligne (stockée dans la variable $line):
paris [nord] [sud];091
pour n'avoir que :
paris [sud];091
Puis, je souhaiterais faire la même chose avec [sud] :
transformer :
paris [nord] [sud];091
en :
paris [nord];091
Merci ;)
Je chercher à supprimer en Shell le mot [nord] de la ligne (stockée dans la variable $line):
paris [nord] [sud];091
pour n'avoir que :
paris [sud];091
Puis, je souhaiterais faire la même chose avec [sud] :
transformer :
paris [nord] [sud];091
en :
paris [nord];091
Merci ;)
Configuration: Windows XP Firefox 2.0.0.14
3 réponses
-
Salut,
[tmpfs]$ echo ${line} paris [nord] [sud];091 [tmpfs]$ echo ${line} | sed 's/ \^*\]//' paris [sud];091 [tmpfs]$ echo ${line} | sed 's/ \^*\]//2' paris [nord];091 [tmpfs]$;-))
-
-
Oups désolé, je n'avais pas fait attention ;-((
La mise en forme n'est pas sortie comme il se devait, il manque des crochets ;-(
Donc essaie comme suit (Attention : il ne faut pas mettre d'espace entre les deux premiers crochets !!!) :[tmpfs]$ echo ${line} | sed 's/ \[ [^]]*\]//' paris [sud];091 [tmpfs]$ echo ${line} | sed 's/ \[ [^]]*\]//2' paris [nord];091 [tmpfs]$;-))
-
-
-
Merci encore !
Ca n'a pas marché cette fois-ci, en revanche j'ai trouvé en bricolant le code /P
pour le premier []
echo $line | sed 's/\^*\]//1'
et pour le second []
echo $line | sed 's/\^*\]//2'
Et voilà :)
Seb
PS :
Si ce n'est pas trop demandé peux tu m'expliquer le fonctionnement de cette ligne de code (je débute en shell)
je connais juste en sed le moyen de changer un mot avec : sed 's/toto/tata/g' et c'est tout.
Alors : ^ et *\] je vois pas tu tout à quoi ça sert.... et pourquoi fallait-il un espace :S ?
Merci :)
Seb
-
-
Salut,
1.root@debian:~# line='paris [nord] [sud];091' root@debian:~# echo $line paris [nord] [sud];091 root@debian:~# line_sud=$(echo $line | sed 's/ \[nord\]//') root@debian:~# echo $line_sud paris [sud];091 root@debian:~# line_nord=$(echo $line | sed 's/ \[sud\]//') root@debian:~# echo $line_nord paris [nord];091 root@debian:~#
2.root@debian:~# line='paris [nord] [sud];091' root@debian:~# line_sud=${line/\[nord\]/} root@debian:~# line_nord=${line/\[sud\]/} root@debian:~# echo $line paris [nord] [sud];091 root@debian:~# echo $line_sud paris [sud];091 root@debian:~# echo $line_nord paris [nord] ;091 root@debian:~#
-
Merci ;)
Et si je ne connais pas les mots entre crochets :D ? mais que je veux quand même choisir de supprimer le 1er puis le 2ème...- si je ne connais pas les mots entre crochets :D ?
jipicy a anticipé ;-)
http://www.commentcamarche.net/forum/affich 6258687 supprimer mot entre crochets en shell#1
-
-