Посмотрите на двунаправленные карты boost: http://www.boost.org/doc/libs/1_38_0/libs/bimap/doc/html/index.html
Он позволяет обеим значениям действовать как ключ.
В противном случае итерация - это путь.
В качестве обходного пути (это не решает проблему «выхода из \w
»)
result=$( echo $networks | grep -oE '"(id|name)": "([a-zA-Z_+-]+)"' ) ;
echo $result
Печатает меня:
"name": "BLUE" "name": "RED" "name": "public"
Примечание: предпочитаю использовать синтаксис $( )
для выполнения субоболочки, а не спина.