【发布时间】:2017-05-14 23:21:47
【问题描述】:
我正在尝试从一个字符串中提取多个子字符串,我想将这些子字符串保存在一个数组中,所以我想到了使用循环,但我真的是 bash 脚本的新手。
原来的字符串是这样的:
{
"groups":[
{
"group":"",
"favourites":[
{
"category":"",
"longitude":1.0812308,
"latitude":49.4304904,
"test":"",
"color":0,
"name":"Place Henri Gadeau de Kerville, Centre Ville Rive Gauche"
},
{
"category":"",
"longitude":1.940849,
"latitude":48.57248,
"test":"",
"color":0,
"name":"Rue Charles de Gaulle, Saint-Arnoult-en-Yvelines"
},
{
"category":"",
"longitude":1.9358053,
"latitude":48.570592,
"test":"",
"color":0,
"name":"Rue des Remparts, Saint-Arnoult-en-Yvelines"
},
{
"category":"",
"longitude":1.0856655,
"latitude":49.4291327,
"test":"",
"color":0,
"name":"Rue Marie Duboccage (Saint-Sever), Rouen"
},
{
"category":"",
"longitude":1.0845655,
"latitude":49.4251747,
"test":"",
"color":0,
"name":"Rue Octave Crutel, Rouen"
}
],
"color":0
}
]
}
所需的输出是一个数组,其名称为 url 模式,来自“name”标签,例如:
Array[0]=Place%20Henri%20Gadeau%20de%20Kerville%2C%20Centre%20Ville%20Rive%20Gauche;
Array[1]=Rue%20Charles%20de%20Gaulle%2C%20Saint-Arnoult-en-Yvelines;
Array[2]=Rue%20des%20Remparts%2C%20Saint-Arnoult-en-Yvelines;
Array[3]=Rue%20Marie%20Duboccage%20(Saint-Sever)%2C%20Rouen;
Array[4]=Rue%20Octave%20Crutel%2C%20Rouen;
...
为了将数组的值保存在另一个文件中,然后使用它们。
我试过grep
grep -o '^\"name\":.*\},$' $var
但我不能得到一个好的结果。
【问题讨论】:
-
您的输入看起来像一个
JSON字符串,请使用适当的JSON解析工具,如jq -
是的,它来自
JSON,但是我必须从 sqlite 查询中获取输入,然后对其进行处理,您认为我仍然可以使用 jq 工具制作脚本吗? -
如果你可以下载安装
jq,我可以在里面提供解决方案,为什么数组中只有3个元素?剩下的呢? -
最后的三个点(...)的意思是“其他的等等”,是的,我可以安装它让你更容易
-
能不能把另外两条也发一下,因为涉及到
(,需要确认一下你想怎么弄