Простой способ:
sed -e 's/.\{11\}\({[^}]*}\)/\1/g'
Так как вы сказали fixed length
, так что просто удалите 11 символов перед каждым {}
блоком.
Или более точным способом (удалите "...":
перед {}
блоком):
sed -e 's/"[^"]*": \({[^}]*}\)/\1/g'
Обратите внимание, что выше не проверялось file_string
существует или нет, если вы хотите, и не уверены, что существует первый "
или нет, используйте это:
sed -e 's/"[^"]*": \({"\{0,1\}field_string[^}]*}\)/\1/g'
Или строго с вашим описанием:
sed -e 's/"[^"]*": \({"\{0,1\}field_string\)/\1/g'
Например:
$ cat file
"abcdefg": {"field_string","xxx","yyy"}, "hijklmn": {"field_string","xyz","dey"}, "opqrstu": {field_string","xxx","yyy"}
$ sed -e 's/"[^"]*": \({"\{0,1\}field_string\)/\1/g' file
{"field_string","xxx","yyy"}, {"field_string","xyz","dey"}, {field_string","xxx","yyy"}