regex - 使用 sed (或任何其他工具)删除 json 文件中的引号

标签 regex linux bash sed

我有一个 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/

相关文章:

c - 杂项驱动程序和字符驱动程序有什么区别?

python - 替换单引号 (') with double quotes (") 除了撇号

php - 将 PHP 结束标记转换为注释

正则表达式帮助 - 查找直到前一个空格字符的所有内容

c# - 正则表达式:匹配除 X 以外的所有内容,然后匹配 X

android - 接受 RSA 指纹后设备未经授权

Python:将参数传递给后台进程

java - Bash 逐行读取文件,按制表符拆分,发送到 java 应用程序

linux - 如何使用 grep、awk 等在 1 中显示 2 行

linux - 查找文件中字符串的数量