2017-10-06 2 views
0

i ont une variable comme ceci: (chaque mot dans une nouvelle ligne)enlever toute occurence de mot dans une variable bash

> echo $LIST 
toto 
toto2 
titi 
rererer 
dfs 
sdfsdf 
titi 
titi 

J'essaie de supprimer toutes les occurences de "titi" pour obtenir que:

> echo $LIST 
toto 
toto2 
rererer 
dfs 
sdfsdf 

J'ai essayé avec LIST = $ (echo $ {// LISTE titi /}) et le supprimer mais également supprimer la ligne nouvelle et donner ce résultat:

> echo $LIST 
toto toto2 rererer dfs sdfsdf 

Ma question est comment supprimer toutes les occurrences en gardant chaque mot dans une ligne? Merci à l'avance :)

+0

et écho sont sous-shell redondants – 123

+0

pouvez-vous essayer: echo "$ liste" | grep -v titi –

Répondre

2

Vous devez mettre des guillemets autour "${LIST//titi/}", sinon des espaces sera pliée:

 
$ LIST='toto 
> toto2 
> titi 
> rererer 
> dfs 
> sdfsdf 
> titi 
> titi' 
$ echo "${LIST//titi/}" 
toto 
toto2 

rererer 
dfs 
sdfsdf 


Mais vous pouvez aussi simplement attribuer directement:

LIST=${LIST//titi/} 
echo "$LIST" # quotes are important here!