هل من الممكن مع jq استخدام قيمة محذوفة في تحديد قيم جديدة؟

0

أنا باستخدام باش إلى سلمان محلل JQ

مع مراعاة الأمر التالي:

jq '. * .transitive | del(.transitive) | del(.scope,.scopedName)' package.json > package.github.json$$

والمدخلات التالية:

{
  "name": "navigation",
  "transitive": {
    "name": "navigation",
    "scope": "bs",
    "scopedName": "@bs/navigation"
  }
}

أحاول الحصول على الإخراج التالي:

{
  "name": "@bs/navigation"
}

هل هناك طريقة قبل الحذف .scopedName ، لاستخدام قيمته للتعيين .name ؟؟؟

1 إجابة

2
افضل جواب

إن تحويل مدخلاتك إلى مخرجاتك أمر بسيط مثل:

jq '{"name": .transitive.scopedName}'

... وبالطبع يمكنك فقط إعادة ترتيب الأشياء لتعيينها name قبل الحذف transitive :

jq '.name=.transitive.scopedName | del(.transitive)'

ومع ذلك ، إذا كنت تريد الاستخدام حقًا del() أولاً ، يمكنك حفظ المحتوى في متغير واستخدامه لاحقًا:

jq '
  .transitive as $transitive |
  del(.transitive) |
  .name=$transitive.scopedName
'
:مؤلف
فوق
قائمة طعام