用于从Json文件创建表的JQ

ldxq2e6h  于 2023-04-08  发布在  其他
关注(0)|答案(1)|浏览(109)

刚开始使用Bash脚本,偶然发现jq可以处理JSON。我尝试了通过jq进行多项操作,但无法获得正确的格式,因为数据更改了输出可读性
我现在有这个,但是随着数据的变化,表格变得一团糟,

echo  "$(jq -r '[(.Results[].Vulnerabilities[] | {VulnerabilityID,PkgName,Severity,InstalledVersion,FixedVersion})] | ["VulnerabilityID","PkgName","       Severity","InstalledVersion","FixedVersion"], ["---------------","-------", "       -------", "----------------", "------------"], (.[] | [.VulnerabilityID, .PkgName, .Severity, .InstalledVersion, .FixedVersion]) | @tsv' json.json)" >> output.txt

我需要将下面的JSON字符串转换为一个表,以便在终端中输出。https://dpaste.org/iKG9n
我想在终端中显示:

VulnerabilityID PkgName     Severity    InstalledVersion    FixedVersion
--------------- -------     -------     ----------------    ------------
CVE-2021-33910  libsystemd0 HIGH        237-3ubuntu10.43    237-3ubuntu10.49
CVE-2021-33910  libudev1    HIGH        237-3ubuntu10.43    237-3ubuntu10.49
brgchamk

brgchamk1#

你当然可以使用jq来检查列中的所有值,然后用空格(或破折号)填充每个项目,使它们具有相等的宽度,但已经有外部工具可以做到这一点。其中一个是util-linux中的column。像这样使用它:

jq -r '… | @tsv' json.json | column -t  # append >> output.txt if needed
VulnerabilityID  PkgName      Severity  InstalledVersion  FixedVersion
---------------  -------      -------   ----------------  ------------
CVE-2021-33910   libsystemd0  HIGH      237-3ubuntu10.43  237-3ubuntu10.49
CVE-2021-33910   libudev1     HIGH      237-3ubuntu10.43  237-3ubuntu10.49

相关问题