我有这个文件,我想继续工作:
{'ID1': {'Zero': u'value',
'One': 'value',
'Two': 'value',
'Three': 'value',
'Four': 'value'},
'ID2': {'Zero': u'alue',
'One': 'value',
'Two': 'value',
'Three': 'value',
'Four': 'value'})
我有这个sed衬垫来获得单一属性:
sed -n '/ID1.*{/,/}/p' file
那会给我这个:
{'ID1': {'Zero': u'value',
'One': 'value',
'Two': 'value',
'Three': 'value',
'Four': 'value'}
我想要做的是用STRING替换输出
无法弄清楚如何。
答案 0 :(得分:0)
将p
替换为{/}/!d;s/.*/STRING/p}
而不是打印每个匹配的行:
/}/!d
删除不包含}
的行。 (不包含范围的END模式)
s/.*/STRING/p
用STRING
最后,在上述操作之后:p
打印范围之外的任何其他内容
完整命令,粗体括号范围内的操作:
sed -n '/ID1.*{/,/}/
的{
强>/}/!d;s/.*/STRING/p
的}
强>;p' file
输出:
STRING
'ID2': {'Zero': u'alue',
'One': 'value',
'Two': 'value',
'Three': 'value',
'Four': 'value'})
你知道,我确信,这在很大程度上取决于你的JSON的格式......你不能拥有任何嵌套的{}
。不过,这是一个值得讨论的问题,因为尝试使用i
命令进行插入会变得很愚蠢,线条笨重的线条延续。