删除 bash 变量中出现的所有单词

removing all word occurence in a bash variable

我有一个这样的变量:(每个单词换行)

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

我尝试删除所有出现的 "titi" 以获得:

> echo $LIST
toto
toto2
rererer
dfs
sdfsdf

我尝试使用 LIST=$(echo ${LIST//titi/}) 并且它删除了它但它也删除了新行并给出了这个结果:

> echo $LIST
toto toto2 rererer dfs sdfsdf

我的问题是如何删除所有出现的情况,使每个单词保持在一行中? 提前致谢:)

需要在"${LIST//titi/}"两边加上引号,否则空格会被折叠:

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

rererer
dfs
sdfsdf


但你也可以直接赋值:

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