如何打印文本文件中的特定单词

时间:2017-03-08 06:00:55

标签: bash shell

我有一个文件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”。

1 个答案:

答案 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/