使用另一个字符串拆分变量中的值并存储在数组中(Bash)



我有一个变量diagnosisCodes,其值如下所示:

echo $diagnosisCodes
{"code":"some code1","codeSet":"some set1","description":"some description1"} {"code":"some code2","codeSet":"some set2","description":"some description2"} {"code":"some code3","codeSet":"some set3","description":"some description3"}

我想使用分隔符"} {"来分割这些值,这样我就可以获得3个不同的值,然后将它们存储在一个数组中(在bash中(。

我使用以下命令找到了解决方案(Incrivel Monstro Verde在评论中建议(:

IFS='|' read -r -a array <<< $(echo $string | sed 's/{"code/|"code/g;s/"}/"/g')

但是,如果字符串的"codeSet"属性位于"code"属性之前,则此解决方案将失败。

您可以使用read:

#!/bin/bash
string='{"code":"some code1","codeSet":"some set1","description":"some description1"} {"code":"some code2","codeSet":"some set2","description":"some description2"} {"code":"some code3","codeSet":"some set3","description":"some descripti
IFS='{' read -r -a array <<< $(echo $string | sed 's/}//g')
echo "${array[1]}"
echo "${array[2]}"
echo "${array[3]}"

试试这个

#!/bin/bash
string='{"code":"some code1","codeSet":"some set1","description":"some description1"} {"code":"some code2","codeSet":"some set2","description":"some description2"} {"code":"some code3","codeSet":"some set3","description":"some description3"}'
var="${string//} {/$'|'}" #replace '} {' with '|' , works for one space only between '} {'
IFS='|' read -r -a array <<< $(echo $var | sed 's/{//g;s/}//g')
for i in "${array[@]}"
do
echo $i
done

最新更新