2017-03-08 12 views
1

Ich habe eine Datei abc.txt der InhaltWie bestimmtes Wort aus einer Textdatei

{ "storageSummary" drucken: { "binariesSummary": { "binariesCount": "703", "binariesSize":“ 882,39 MB "," artifactsSize ":" 3,41 GB "," Optimierung ":" 25,23% "," itemsCount ":" 4,126 "," artifactsCount ":" 1,917 "}," fileStoreSummary ": {" storageType ":" Datei -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 Bytes", "itemsCount": 0, "packageType": "SBT", "Prozentsatz": "0%"}, {"repoKey": "test7.mvlo", "repoType": "LOCAL", "foldersCount": 0, "filesCount": 1 , "usedSpace": "128 Bytes", "itemsCount": 1, "packageType": "Maven", "Prozentsatz": "0%"}, {"repoKey" : "scripttestkp.rplo", "repoType": "LOCAL", "foldersCount": 0, "filesCount": 0, "usedSpace": "0 Bytes", "itemsCount": 0, "packageType": "RPM", "Prozentsatz": "0%"}, {"repoKey": "test7.grvr", "repoType": "VIRTUELL", "foldersCount": 0, "filesCount": 0, "usedSpace": "0 Bytes", "itemsCount": 0, "packageType": "Gradle", "Prozentsatz"

Aus dieser Datei, wie nur "RepoKey" und "UsedSpace" in Shell-Skript gedruckt werden.

+1

Ist das ein 'json' Eingang ?, sieht aus wie ein gebrochener' JSON' Eingang Datei, und stellen Sie die komplette 'json' Eingabe zur Verfügung. – Inian

+0

Verwenden Sie nach dem Reparieren der Eingabedatei einen geeigneten 'JSON'-Parser. – Inian

+0

Warum sagen Sie, dass der Json falsch ist, Inian? Es scheint auf den ersten Blick okay zu sein ... sieht aus, als hätte er ein bisschen ausschneiden und einfügen können. Vielleicht –

Antwort

-1

müssen Sie Zugang: data.storageSummary.repositoriesSummaryList [i] .repoKey für jeden i in der Liste

Neben Iterieren über alles, was usedspace als Schlüssel ... zum Beispiel hat: data.storageSummary .fileStoreSummary.usedSpace und data.storageSummary.repositoriesSummaryList [i] für jeden i .usedSpace

in der Kommandozeile von Linux-Box verwendet jq, der Befehl die erste Instanz von usedspace zuzugreifen:

curl "site" | jq ".storageSummary.fileStoreSummary.usedSpace" 

Ausgang ist:

"1.23 GB (0.09%)" 

der Befehl das Array von Werten für usedspace unter repoKeys zuzugreifen ist:

curl "site" | jq ".storageSummary.repositoriesSummaryList[].usedSpace" 

die Ausgabe ist:

"0 bytes" 
"128 bytes" 
"0 bytes" 
"0 bytes" 

der Befehl für den Zugriff auf das Array von Werten von repoKey ist :

curl "site" | jq ".storageSummary.repositoriesSummaryList[].repoKey" 

die ou tput ist:

"sbt_remote-cache" 
"test7.mvlo" 
"scripttestkp.rplo" 
"test7.grvr" 

dies durch eine Korrektur der json so vorgesehen überprüft werden kann, dass es gültig wird dann über Überschrift auf https://jqplay.org/

Verwandte Themen