I am trying to change values from array in a JSON object with sed and jq. So object looks like this:
{
"alertrulemethoddata": "",
"alertruleimportance": 50,
"alertruletype": "any",
"alertrule_any": "filter:\n- query_string:\n query: 'data.win.system.eventID:\"4624\"'",
"alertrulemethodusers": [],
"alertrulemethod": "none",
"alertruleindexpattern": "windows",
"alertruleplaybooks": [],
"alertrulefilename": "windows_logon",
"alertrulename": "windows-logon",
"enable": "Y",
"selectedroles": [
"admin"
],
"alertruleriskkeyaggregation": "MAX",
"authenticator": "index",
"alertruleriskkey": "",
"changed": false
}
And I am trying to change value from field "selectedroles" to a script argument. What I did so far:
for i in `cat $file`; do
selectedroles=`echo "$i" | jq '._source.selectedroles' | tr -d "[]" | tr -d "\"" | tr -d "\n" | tr -d " "`
for j in $selectedroles; do
sed -i 's/\"selectedroles\":[\"'$j'\"]/\"selectedroles\":[\"'$newname'\"]/g' $file
done
done
Could someone help me with this problem? I am struggling with this for long time and have no clue what is the issue.