首页 > 解决方案 > 使用多字符分隔符将字符串拆分为数组

问题描述

我需要将一个字符串拆分为一个数组。我的问题是分隔符是 3 个字符:_-_
例如:

db2-111_-_oracle12cR1RAC_-_mariadb101

我需要创建以下数组:

db2-111
oracle12cR1RAC
mariadb101

类似的问题遵循这种方法:

str="db2-111_-_oracle12cR1RAC_-_mariadb101"
arr=(${str//_-_/ })
echo ${arr[@]}

即使创建了数组,它也被错误地拆分:

db2 
111 
oracle12cR1RAC 
mariadb101

似乎第一项中的“-”字符导致数组的拆分功能失败。你能建议修复它吗?谢谢

标签: arraysstringbash

解决方案


如果可以,请将_-_序列替换为另一个可用于字段拆分的单个字符。例如,

$ str="db2-111_-_oracle12cR1RAC_-_mariadb101"
$ str2=${str//_-_/#}
$ IFS="#" read -ra arr <<< "$str2"
$ printf '%s\n' "${arr[@]}"
db2-111
oracle12cR1RAC
mariadb101

推荐阅读