I have a string variable in bash which looks like so:
{\"SOGoTimeFormat\": \"%H:%M\", \"SOGoMailShowSubscribedFoldersOnly\": \"0\", \"SOGoMailSignaturePlacement\
What you have is JSON and what you should be using is a JSON parser. Using regex is not a good substitute.
Here's some python that loads the string, and if enabled
in Forward
is 1, deletes any address with the substring "testuser2" from the forwardAddress
list:
#!/bin/python
import sys
import json
thing = json.load(sys.stdin)
forward = thing["Forward"]
if forward["enabled"] == 1:
forward["forwardAddress"] = \
filter(lambda x: not "testuser2" in x, \
forward["forwardAddress"])
json.dump(thing, sys.stdout)
You can run it with
echo "$yourvariable" | python thisfile.py
The json re-encoding process might shuffle the fields. This doesn't matter, as the strings still represent the same json objects.