通过多个正则表达式与bash匹配

时间:2018-04-07 19:52:08

标签: json regex bash

所以我有一个多行字符串,我需要从中提取多个项目(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

感谢您的帮助!

0 个答案:

没有答案