I need to split a string into an array. My problem is that the delimiter is a 3 character one: _-_
For example:
db2-111_-_oracle12cR1RAC_-_mariadb101
I need to create the following array:
db2-111
oracle12cR1RAC
mariadb101
Similar questions followed this approach:
str="db2-111_-_oracle12cR1RAC_-_mariadb101"
arr=(${str//_-_/ })
echo ${arr[@]}
Even if the array is created, it has been split incorrectly:
db2
111
oracle12cR1RAC
mariadb101
It seems that the "-" character in the first item causes the array's split function to fail.
Can you suggest a fix for it? Thanks.
If you can, replace the _-_
sequences with another single character that you can use for field splitting. For example,
$ str="db2-111_-_oracle12cR1RAC_-_mariadb101"
$ str2=${str//_-_/#}
$ IFS="#" read -ra arr <<< "$str2"
$ printf '%s\n' "${arr[@]}"
db2-111
oracle12cR1RAC
mariadb101