2016-11-01 4 views
2

Ich möchte alle resloved aus einer npm shrinwrap json Datei löschen. Dies führt zu einem Problem, wenn npm install auf einem anderen Computer ausgeführt wird.So löschen Sie alle verschachtelten Schlüssel mit JQ

"cssstyle": { 
     "version": "0.2.37", 
     "from": "[email protected]>=0.2.29 <0.3.0", 
     "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz" 
    }, 
    "dashdash": { 
     "version": "1.14.0", 
     "from": "[email protected]>=1.12.0 <2.0.0", 
     "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", 
     "dependencies": { 
     "assert-plus": { 
      "version": "1.0.0", 
      "from": "[email protected]>=1.0.0 <2.0.0", 
      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" 
     } 
     } 
    }, 
    "debug": { 
     "version": "2.2.0", 
     "from": "[email protected]>=2.2.0 <3.0.0", 
     "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" 
    } 

Wie kann ich die aufgelösten Schlüssel aus allen

Datei lösche

ich das Muster bin mit:

jq 'del(.resolved)' file.json 

Antwort

1

Meiner Meinung nach ist der einfachste Ansatz, um diese Art von Problem ist verwenden walk/1:

walk(if type == "object" and has("resolved") then del(.resolved) else . end) 

Wenn Ihr jq nicht walk/1 hat (die erst nach der Veröffentlichung von jq 1.5 als Built-in hinzugefügt wurde), dann füge einfach ihre Definition (leicht verfügbar im Web) vor der obigen Zeile hinzu oder führe sie vielleicht in deine ~/.jq-Datei ein.

+0

ist das ein Befehl? –

+0

In der jq-Terminologie ist es ein Filter, genau wie der, den Sie angegeben haben. Sie können es wie in der Befehlszeile eingeben oder in eine Datei einfügen und jq mit der Option -f aufrufen. – peak

+1

Wie man WALK hinzufügen? –

Verwandte Themen