我需要将一个字符串分割成数组。我的问题是分隔符是一个由3个字符组成的: _-_
例如:
db2-111_-_oracle12cR1RAC_-_mariadb101
我需要创建以下数组:
db2-111
oracle12cR1RAC
mariadb101
类似的问题都遵循了这个方法:
str="db2-111_-_oracle12cR1RAC_-_mariadb101"
arr=(${str//_-_/ })
echo ${arr[@]}
即使数组已创建,也可能被错误地分割:
db2
111
oracle12cR1RAC
mariadb101
似乎第一个项目中的"-"字符会导致数组的分割函数失败。 你能提出修复方法吗?谢谢。
echo ${arr[0]} db2 111 oracle12cR1RAC mariadb101
- Francesco Marchionised "s/\_\-\_/ /g"
- Francesco Marchionizsh
,bash-4.4
和bash-3.2
上运行。 - Aserrebash
4.3中设置了IFS="_-_"
,那么你会得到这样的输出,这似乎是你尝试过但忘记重置的东西。此代码假定IFS
具有其默认值。 - chepner