json - 如何在 bash 中用\"替换 JSON 文件中的引号?

标签 json regex linux bash sed

比如从一行文件中读取了一个字符串值。

{"ip":"91.239.165.20","timestamp":"2015-10-16T14:14:31-04:00","data":{"banner":"220 ********.****rn","ehlo":"502 Error: command "EHLO" not implementedrn","starttls":"502 Error: command "STARTTLS" not implementedrn"},"error":"Bad return code for STARTTLS","error_component":"starttls"}

如你所见,字符串中包含了一个短语“EHLO”,就像

“某事“EHLO”结束”

但是现在我想让这条线看起来像这样,

"something \\"EHLO\\"   the end"

如何转换替换这行JSON数据中的引号?

在 bash、正则表达式或其他...

它应该在命令行中运行。

非常感谢!

最佳答案

将 GNU awk 用于 split() 的第 4 个参数,这将适用于如您所示格式化的行:

$ cat tst.awk
{
    n = split($0,f,/{"|"}|":{?"|"}?,"/,s)
    for (i=1; i<=n; i++) {
        gsub(/"/,"\\\"",f[i])
        printf "%s%s", f[i], (i<n ? s[i] : ORS)
    }
}

$ awk -f tst.awk file
{"ip":"91.239.165.20","timestamp":"2015-10-16T14:14:31-04:00","data":{"banner":"220 ********.****rn","ehlo":"502 Error: command \"EHLO\" not implementedrn","starttls":"502 Error: command \"STARTTLS\" not implementedrn"},"error":"Bad return code for STARTTLS","error_component":"starttls"}

如果您有其他格式不适用,那么您应该编辑您的问题以确保您提供的示例输入/输出更真实地代表您的真实数据。

关于json - 如何在 bash 中用\"替换 JSON 文件中的引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35947271/

相关文章:

ios - json数据自定义http请求

javascript - 将每 N 个空格替换为换行符

C# Json 字符串的等效类

Java将json映射到两个对象

没有双{}的Javascript将数组转换为Json

Java 正则表达式应该匹配子字符串,但不构成结果的一部分

php - 为什么 preg_replace 给出这个输出?

python - 我可以在并行窗口中为当前也正在运行作业的同一台 guest 计算机执行 vagrant ssh 吗?会影响现在的工作吗?

linux - 在 Gnuplot 中命名图例条目,同时从数据文件中绘制

c - 为什么 valgrind 在调用 `pcap_open_offline` 时会报告内存泄漏?