json - 使用 JQ Issue 解析复杂的 JSON 文件

标签 json bash csv jq

我有一个包含 100000 个结果的大 JSON 文件。我知道如何使用 'JQ' 进行基本解析。

病毒.json

{
  "detected": true,
  "result": "Trojan.Win32.Generic!BT",
  "update": "20170115",
  "version": "1.5.0.42"
}
{
  "detected": true,
  "result": "FileCryptor.NJX",
  "update": "20170115",
  "version": "16.0.0.4749"
}
{
  "detected": true,
  "result": "Generic.Ransom.Purge.DC87C66E",
  "update": "20170115",
  "version": "1.0.1.9"
}

但是在这个 JSON 文件上,我想以 CSV 格式获取诸如“检测到”和“结果”之类的字段。我知道如何使用 JQ 单独获取它。

我试过了,

1

$ jq -r ".detected" virus.json 

true
true
true

2

 $ jq -r ".result" dum_1.json 

    Trojan.Win32.Generic!BT
    FileCryptor.NJX
    Generic.Ransom.Purge.DC87C66E

3

jq -r ".detected,.result" dum_1.json 
true
Trojan.Win32.Generic!BT
true
FileCryptor.NJX
true
Generic.Ransom.Purge.DC87C66E

而不是 #3 ,我希望输出为

输出

true , Trojan.Win32.Generic!BT
true , FileCryptor.NJX
true , Generic.Ransom.Purge.DC87C66E

关于如何获得结果有什么建议吗?

最佳答案

@csv 将从平面数组转换为 CSV,所以这应该让你开始:

jq -r '[.detected, .result] | @csv'

给定您的样本输入,这将产生:

true,"Trojan.Win32.Generic!BT"
true,"FileCryptor.NJX"
true,"Generic.Ransom.Purge.DC87C66E"

如果要删除引号,请考虑:

jq -r '"\(.detected), \(.result)"'

关于json - 使用 JQ Issue 解析复杂的 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479789/

相关文章:

json - 如何使用 Python 使我的 json 文件成为有效的 json 文件

bash - 使用 Bash 从包名称中剥离版本

bash - 字符串重组命令的IO重定向

python - 从云函数在 Google Cloud Storage 中创建新的 csv 文件

php - MySQL 使用 blob 字段导出到 CSV

java - 将 JSON 对象发布到 HTTP 服务器

javascript - v4 中的 d3 缩放功能问题

php - JavaScript 对象到 Json。 PHP 无法解码序列化 JSON

bash - BASH 变量名称中可以接受哪些 Unicode 符号?

perl - 使用 perl 将一个制表符分隔文件中的数据解析为另一个文件