我有一个 json 文件
{"doc_type":"user","requestId":"1000778","clientId":"42114"}
我想把它改成
{"doc_type":"user","requestId":1000778,"clientId":"42114"}
即将 requestId 从字符串转换为整数。我尝试了一些方法,但似乎都不起作用:
sed -e 's/"requestId":"[0-9]"/"requestId":$1/g' test.json
sed -e 's/"requestId":"\([0-9]\)"/"requestId":444/g' test.json
有人可以帮我吗?
最佳答案
尝试
sed -e 's/\("requestId":\)"\([0-9]*\)"/\1\2/g' test.json
或
sed -e 's/"requestId":"\([0-9]*\)"/"requestId":\1/g' test.json
与您的尝试的主要区别是:
您的正则表达式正在寻找双引号之间的
[0-9]
,并且这是一个数字。通过使用[0-9]*
,您可以查找任意数量的数字(零个或多个数字)。如果您想将搜索中的字符序列复制到替换字符串中,则需要在正则表达式中定义一个以
\(
开头和结尾\)
组成的组,然后在替换字符串中使用\1
来插入该字符串。如果有多个组,则对第一个组使用\1
,对第二组使用\2
,依此类推。
另请注意,最后一个 /
之后的最后一个 g
用于在每个处理的行中的所有匹配中应用此替换。如果没有该 g
,替换将仅应用于每个已处理行中的第一个匹配项。因此,如果您只希望每行有一个这样的替换,则可以删除该 g
。
关于regex - 使用 sed (或任何其他工具)删除 json 文件中的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51450154/