#!/bin/bash
string="name: MAIN_ROLE
description: ROLE DESCRIPTION
readOnly:
roleReferences:
- roleTemplateAppId: app1 extra1
roleTemplateName: template1 extra1
name: Name1 extra1
- roleTemplateAppId: app2 extra2
roleTemplateName: template2 extra2
name: Name2 extra2
"
awk -F':[[:space:]]+' 'NR==1{ # When on Line 1
a=$2;cnt=0 # Set a and cnt vars
}
/^-/{ # When line starts with -
rta[cnt]=$2; getline; # Add role template app ID to rta array
rtn[cnt]=$2; getline; # Add role template name to rtn array
n[cnt]=$2;cnt++ # Add name to n array
}
END{ # When the file processing is over
for(i=0;i<cnt;i++) { # Iterate over the found values and...
print a","n[i]","rtn[i]","rta[i] # print them
}
}' <<< "$string"
# => MAIN_ROLE,Name1,template1,app1
# MAIN_ROLE,Name2,template2,app2
IyEvYmluL2Jhc2gKc3RyaW5nPSJuYW1lOiBNQUlOX1JPTEUKZGVzY3JpcHRpb246IFJPTEUgREVTQ1JJUFRJT04KcmVhZE9ubHk6CnJvbGVSZWZlcmVuY2VzOgotIHJvbGVUZW1wbGF0ZUFwcElkOiBhcHAxIGV4dHJhMQogIHJvbGVUZW1wbGF0ZU5hbWU6IHRlbXBsYXRlMSBleHRyYTEKICBuYW1lOiBOYW1lMSAgZXh0cmExCi0gcm9sZVRlbXBsYXRlQXBwSWQ6IGFwcDIgZXh0cmEyCiAgcm9sZVRlbXBsYXRlTmFtZTogdGVtcGxhdGUyIGV4dHJhMgogIG5hbWU6IE5hbWUyIGV4dHJhMgoiCgphd2sgLUYnOltbOnNwYWNlOl1dKycgJ05SPT0xeyAgICAgICAgICAgICAgICMgV2hlbiBvbiBMaW5lIDEKICAgIGE9JDI7Y250PTAgICAgICAgICAgICAjIFNldCBhIGFuZCBjbnQgdmFycwp9Ci9eLS97ICAgICAgICAgICAgICAgICAgICAgIyBXaGVuIGxpbmUgc3RhcnRzIHdpdGggLQogICAgcnRhW2NudF09JDI7IGdldGxpbmU7ICMgQWRkIHJvbGUgdGVtcGxhdGUgYXBwIElEIHRvIHJ0YSBhcnJheQogICAgcnRuW2NudF09JDI7IGdldGxpbmU7ICMgQWRkIHJvbGUgdGVtcGxhdGUgbmFtZSB0byBydG4gYXJyYXkKICAgIG5bY250XT0kMjtjbnQrKyAgICAgICAjIEFkZCBuYW1lIHRvIG4gYXJyYXkKfQpFTkR7ICAgICAgICAgICAgICAgICAgICAgICMgV2hlbiB0aGUgZmlsZSBwcm9jZXNzaW5nIGlzIG92ZXIKICAgIGZvcihpPTA7aTxjbnQ7aSsrKSB7ICAjIEl0ZXJhdGUgb3ZlciB0aGUgZm91bmQgdmFsdWVzIGFuZC4uLiAKICAgICAgICBwcmludCBhIiwibltpXSIsInJ0bltpXSIsInJ0YVtpXSAgIyBwcmludCB0aGVtCiAgICB9Cn0nIDw8PCAiJHN0cmluZyIKCiMgPT4gTUFJTl9ST0xFLE5hbWUxLHRlbXBsYXRlMSxhcHAxCiMgICAgTUFJTl9ST0xFLE5hbWUyLHRlbXBsYXRlMixhcHAy