【发布时间】:2016-10-31 06:35:26
【问题描述】:
我必须修改一个文件 json.我必须将单引号替换为双引号,但我不能使用以下命令sed -i -r "s/'/\"/g" file,因为文件中有更多单引号我不会更改。
以下代码为字符串示例:
"categories": [['Clothing, Shoes & Jewelry', 'Girls'], ['Clothing, Shoes & Jewelry', 'Novelty, Costumes & More', 'Costumes & Accessories', 'More Accessories', 'Kids & Baby']]
理想的结果应该是:
"categories": [["Clothing, Shoes & Jewelry", "Girls"], ["Clothing, Shoes & Jewelry", "Novelty, Costumes & More", "Costumes & Accessories", "More Accessories", "Kids & Baby"]]
示例文件:
{"categories": [['Movies & TV', 'Movies']], "title": "Understanding Seizures and Epilepsy DVD"},
{"title": "Who on Earth is Tom Baker?", "salesRank": {"Books": 3843450}, "categories": [['Books']]},
{"categories": [['Clothing, Shoes & Jewelry', 'Girls'], ['Clothing, Shoes & Jewelry', 'Novelty, Costumes & More', 'Costumes & Accessories', 'More Accessories', 'Kids & Baby']], "description": "description, "title": "Mog's Kittens", "salesRank": {"Books": 1760368}}},
{"description": "Three Dr. Suess' Puzzles", "brand": "Dr. Seuss", "categories": [['Toys & Games', 'Puzzles', 'Jigsaw Puzzles']]},
我使用了正则表达式,但问题是我不知道括号中有多少元素。所以我想用一种方法来替换括号中的所有单引号,这是一个完美的方法,但我找不到解决方案。
【问题讨论】:
-
您的意思是您只能更改给定行中的引号?你能发布一个(小)完整的 json 文件吗?
-
{"categories": [['Movies & TV', 'Movies']], "title": "了解癫痫发作和癫痫 DVD"}, {"title": "地球上的人是谁Tom Baker?", "salesRank": {"Books": 3843450}, "categories": [['Books']]}, {"categories": [['Clothing, Shoes & Jewelry', 'Girls'], ['服装、鞋子和珠宝'、'新奇、服饰及更多'、'服饰和配饰'、'更多配饰'、'儿童和婴儿']],“描述”:“描述”,“标题”:“Mog's Kittens", "salesRank": {"Books": 1760368}}}, {"description": "Three Dr. Suess' Puzzles", "brand": "Dr. Seuss", "categories": [['Toys &游戏”、“拼图”、“拼图”]]}、
-
抱歉,很难阅读...但是如果您看到“类别”字段,我会将单引号更改为双引号...但是该字段中有不同数量的字符串。
-
我冒昧地用您的评论编辑了您的帖子。行格式丢失了,所以如果你愿意,你可以再次edit。我看到的唯一问题是在任何地方更改为单引号都会破坏
"Three Dr. Suess' Puzzles",因为字符串中有一个引号。那是你的问题吗?因为它很大。 -
感谢您的修改,我编辑了帖子。无论如何,问题不在于“描述”字段,而是“类别”......我只会更改该字段中的单引号......但是,正如我所说,我不能使用这个
sed -i -r "s/'/\"/g" file,因为,这样,我也更改了其他单引号(例如“三个苏斯博士的谜题”),我不想要这个。