2017-10-06 7 views
0

ich habe eine Variable wie folgt aus: (jedes Wort in einer neuen Zeile)alle Wort Vorkommen in einer Bash-Variable entfernen

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

Ich versuche, alle Vorkommen von „Titi“ zu entfernen, dass zu erhalten:

> echo $LIST 
toto 
toto2 
rererer 
dfs 
sdfsdf 

ich habe versucht, mit LIST = $ (echo $ {LIST // titi /}) und es entfernen, aber auch neue Zeile löschen und dieses Ergebnis geben:

> echo $LIST 
toto toto2 rererer dfs sdfsdf 

Meine Frage ist, wie alle Vorkommen entfernt werden, wobei jedes Wort in einer Zeile bleibt. Vielen Dank im Voraus :)

+0

Subshell und Echo sind überflüssig – 123

+0

können Sie versuchen: echo "$ list" | grep -v titi –

Antwort

2

Sie müssen Anführungszeichen setzen um "${LIST//titi/}", sonst Leerzeichen kollabiert werden:

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

rererer 
dfs 
sdfsdf 


Sie können aber auch zuweisen nur direkt:

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