我有一个文件abc.txt,内容是
{“storageSummary”:{“binariesSummary”:{“binariesCount”:“703”,“binariesSize”:“882.39 MB”,“artifactsSize”:“3.41 GB”,“optimization”:“25.23%”,“ itemsCount“:”4,126“,”artifactsCount“:”1,917“},”fileStoreSummary“:{”storageType“:”file-system“,”storageDirectory“:”/ jfrog_uat_nfs / binaries“,”totalSpace“:”1.30 TB“ ,“usedSpace”:“1.23 GB(0.09%)”,“freeSpace”:“1.30 TB(99.91%)”},“repositoriesSummaryList”:[{“repoKey”:“sbt_remote-cache”,“repoType”:“CACHE “,”foldersCount“:0,”filesCount“:0,”usedSpace“:”0字节“,”itemsCount“:0,”packageType“:”SBT“,”百分比“:”0%“},{”repoKey “:”test7.mvlo“,”repoType“:”LOCAL“,”foldersCount“:0,”filesCount“:1,”usedSpace“:”128 bytes“,”itemsCount“:1,”packageType“:”Maven“ ,“百分比”:“0%”},{“repoKey”:“scripttestkp.rplo”,“repoType”:“LOCAL”,“foldersCount”:0,“filesCount”:0,“usedSpace”:“0字节” “itemsCount”:0 “packageType”: “RPM”, “百分比”: “0%”},{ “repoKey”: “test7.grvr”, “repoType”: “虚拟”, “foldersCount”:0, “filesCount”:0,“usedSpace”:“0 bytes”,“itemsCount”:0,“packageType”:“Gradle”,“百分比“
从这个文件中如何在shell脚本中只打印“repoKey”和“usedSpace”。
答案 0 :(得分:-1)
您需要访问:data.storageSummary.repositoriesSummaryList [i] .repoKey列表中的每个i
除了迭代使用了Space作为键的所有内容之外......例如:data.storageSummary.fileStoreSummary.usedSpace和data.storageSummary.repositoriesSummaryList [i] .usedSpace for each i
在linux框的命令行中使用jq,访问usedSpace的第一个实例的命令是:
curl "site" | jq ".storageSummary.fileStoreSummary.usedSpace"
输出是:
"1.23 GB (0.09%)"
在repoKeys下访问usedSpace的值数组的命令是:
curl "site" | jq ".storageSummary.repositoriesSummaryList[].usedSpace"
输出是:
"0 bytes"
"128 bytes"
"0 bytes"
"0 bytes"
访问repoKey值数组的命令是:
curl "site" | jq ".storageSummary.repositoriesSummaryList[].repoKey"
输出是:
"sbt_remote-cache"
"test7.mvlo"
"scripttestkp.rplo"
"test7.grvr"
这可以通过更正所提供的json进行验证,使其有效,然后转到https://jqplay.org/