所以我有一个多行字符串,我需要从中提取多个项目(1个正则表达式字符串捕获多个组)。我需要循环这些结果。
到目前为止我的例子:
#!/bin/bash
string='
{
"id" : 45,
"name" : "John Doe",
"address" : "123 Fake Street"
},
{
"id" : 46,
"name" : "Jane Doe",
"address" : "234 Somewhere Road"
}
'
regex='\{[^\}]*id" : ([0-9]*)[^\}]*name" : "([a-zA-Z ]*)"[^\}]*address" : "([a-zA-Z0-9 ]*)"[^\}]*}'
if [[ "$string" =~ $regex ]]; then
echo "${BASH_REMATCH[1]} | ${BASH_REMATCH[2]} | ${BASH_REMATCH[3]}"
fi
输出:
45 | John Doe | 123 Fake Street
如何循环所有结果,输出:
45 | John Doe | 123 Fake Street
46 | Jane Doe | 234 Somewhere Road
47 | Someone else | 777 Nowhere Dr
... etc
感谢您的帮助!