我有一个变量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