json - 如何通过 Linux 命令删除 JSON 文件中的对象

标签 json linux

我有一个放在 Linux 服务器中的 JSON 文件。我想从第二个位置开始删除 partcualr 对象。 问题:-

  1. 根元素保留它,必须删除在 JSON 文件中重复的相同对象。
  2. 如何在 JSON 数据中附加方括号

我厌倦了 sedawk 命令,但运气不好

sed '/"审计"/,//d;/^$/d' sample_request.json >> test.json -- 它正在删除整个对象而不是特定单词。

audit -- 从病房的第二个位置删除 json 文件中的这个对象。 [] -- 此框括号需要附加到显示为的文件 异常输出

实际:-

{
  "audit" : {
    "audit number" : "123",
    "amount" : {
      "Amount" : -10.0,
      "code" : "abc"
    },
    "over" : 1
  },
  "audit" : {
    "audit number" : "234",
    "amount" : {
      "Amount" : 290.0,
      "code" : "xyz"
    },
    "over" : 5
  },
  "audit" : {
    "audit number" : "235",
    "amount" : {
      "Amount" : 270.0,
      "code" : "kdb"
    },
    "over" : 6
  },
  "id" : "test",
  "eid" : "1",
  "bcode" : "123",
  "wid" : "1234",
  "wsid" : "11",
  "ss" : 2
  }

异常输出如下:

{
  "audit" :[{
    "audit number" : "123",
    "amount" : {
      "Amount" : -10.0,
      "code" : "abc"
    },
    "over" : 1
  },
   {
    "audit number" : "234",
    "amount" : {
      "Amount" : 290.0,
      "code" : "xyz"
    },
    "over" : 5
  },
    {
    "audit number" : "235",
    "amount" : {
      "Amount" : 270.0,
      "code" : "kdb"
    },
    "over" : 6
  },
]
  "id" : "test",
  "eid" : "1",
  "bcode" : "123",
  "wid" : "1234",
  "wsid" : "11",
  "ss" : 2
  }

最佳答案

在 sed 中,你可以这样做:

sed -e '1,/audit number/s#audit".*#audit" : [{#' \
    -e '/audit number/,$s#"audit"\s*:##' \
    -e '{N;s#,\s*"id"#]&#;P;D}' input.txt

大致翻译为:

  1. 在第 1 行和第一个“审计编号”之间用 A 代替审计字段。
  2. 在第一个“审计编号”和末尾之间,用 B 代替审计字段。
  3. 使用连线查找 ,[空格]"id"并在其前插入 ']'。

使用字符串工具处理 JSON 是非常危险的,因为交换 JSON 的程序之间不相关的间距和顺序的变化会扰乱这种解析方式。通常最好进行最少量的修复以获得有效的 JSON,然后以最喜欢的编程语言使用普通的 JSON 工具。

关于json - 如何通过 Linux 命令删除 JSON 文件中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55320938/

相关文章:

linux - 我可以创建一个 bash 脚本,该脚本依赖于我的 shell 中先前执行的命令的退出代码吗?

linux - 如何编写 linux 应用程序/库与三星 Galaxy Buds 耳机交互?

python - 使用 numpy.memmap 映射设备文件

linux - 带有忽略空格/行尾的樱桃选择

c# - 将格式为 "property=whatever&property2=whatever"的字符串反序列化为对象

linux - chmod 不适用于 virtualbox 共享文件夹

java - 如何在Java中获取深度嵌套的JSON对象

json - 有没有办法在严格的 JSON 模式下运行 MongoDB shell(或 tojson 方法)?

php - 如何解码这个 JSON 字符串?

javascript - angularjs 格式日期不起作用