2016-04-13 15 views
0

giriş

ben araştırılmış ve 2 gün boyunca bu denedi için dönüştürülürken tek alanı düzenleyin. Benzer bir soru bulmakta ya da kendime bir cevap bulmakta başarılı olamadım.jq: CSV

şöyle ben

{ "content": [ 
{ 
    "@type": "CatalogResource", 
    "id": "ccc", 
    "iconId": "xxx", 
    "resourceTypeRef": { 
    "id": "Infrastructure.Virtual", 
    "label": "Virtual Machine" 
}, 
    "name": "name01", 
    "description": "example01", 
    "status": "ACTIVE", 
    "catalogItem": { 
    "id": "xxxxx", 
    "label": "xxxxx" 
}, 
    "requestId": "xxxxx", 
    "providerBinding": { 
    "bindingId": "xxxx", 
    "providerRef": { 
     "id": "xxxxx", 
     "label": "xxxxx" 
    } 
}, 
    "owners": [ 
    { 
     "tenantName": "xxxxx", 
     "ref": "xxxxxxxx", 
     "type": "USER", 
     "value": "xxxxxxxxx" 
    } 
    ], 
    "organization": { 
    "tenantRef": "xxxx", 
    "tenantLabel": "xxxxxxx", 
    "subtenantRef": "xxxxxx", 
    "subtenantLabel": "xxxxxxxxx" 
}, 
    "dateCreated": "2015-10-05T08:58:35.133Z", 
    "lastUpdated": "2015-12-03T13:23:54.187Z", 
    "hasLease": true, 
    "lease": { 
    "start": "2015-10-05T08:21:31.000Z" 
}, 
    "leaseForDisplay": null, 
    "hasCosts": true, 
    "costs": { 
    "leaseRate": { 
     "type": "moneyTimeRate", 
     "cost": { 
     "type": "money", 
     "currencyCode": "GBP", 
     "amount": 99999 
     }, 
     "basis": { 
     "type": "timeSpan", 
     "unit": "DAYS", 
     "amount": 1 
     } 
    } 
}, 
    "costToDate": { 
    "type": "money", 
    "currencyCode": "GBP", 
    "amount": 19181 
}, 
    "totalCost": null, 
    "childResources": [], 
    "operations": null, 
    "forms": { 
    "catalogResourceInfoHidden": true, 
    "details": { 
     "type": "extension", 
     "extensionId": "xxxxxx", 
     "extensionPointId": null 
    } 
    }, 
    "resourceData": { 
    "entries": [] 
    } 
}, 
{ 
    "@type": "CatalogResource", 
    "id": "ccc", 
    "iconId": "xxx", 
    "resourceTypeRef": { 
    "id": "Infrastructure.Virtual", 
    "label": "Virtual Machine" 
    }, 
    "name": "name01", 
    "description": "this, is, my, problem", 
    "status": "ACTIVE", 
    "catalogItem": { 
    "id": "xxxxx", 
    "label": "xxxxx" 
    }, 
    "requestId": "xxxxx", 
    "providerBinding": { 
    "bindingId": "xxxx", 
    "providerRef": { 
     "id": "xxxxx", 
     "label": "xxxxx" 
    } 
    }, 
    "owners": [ 
    { 
     "tenantName": "xxxxx", 
     "ref": "xxxxxxxx", 
     "type": "USER", 
     "value": "xxxxxxxxx" 
    } 
    ], 
    "organization": { 
    "tenantRef": "xxxx", 
    "tenantLabel": "xxxxxxx", 
    "subtenantRef": "xxxxxx", 
    "subtenantLabel": "xxxxxxxxx" 
    }, 
    "dateCreated": "2015-10-05T08:58:35.133Z", 
    "lastUpdated": "2015-12-03T13:23:54.187Z", 
    "hasLease": true, 
    "lease": { 
    "start": "2015-10-05T08:21:31.000Z" 
    }, 
    "leaseForDisplay": null, 
    "hasCosts": true, 
    "costs": { 
    "leaseRate": { 
     "type": "moneyTimeRate", 
     "cost": { 
     "type": "money", 
     "currencyCode": "GBP", 
     "amount": 99999 
     }, 
     "basis": { 
     "type": "timeSpan", 
     "unit": "DAYS", 
     "amount": 1 
     } 
    } 
    }, 
    "costToDate": { 
    "type": "money", 
    "currencyCode": "GBP", 
    "amount": 19181 
    }, 
    "totalCost": null, 
    "childResources": [], 
    "operations": null, 
    "forms": { 
    "catalogResourceInfoHidden": true, 
    "details": { 
     "type": "extension", 
     "extensionId": "xxxxxx", 
     "extensionPointId": null 
    } 
    }, 
    "resourceData": { 
    "entries": [] 
    } 
} 
] 
} 

Ben CSV dönüştürmek (VRA API'larından) Aşağıdaki JSON yükü vardır: Ben .description alanını düzenlemek gerekir

jq --raw-output -r '.content[0] | [.name,.id,.resourceTypeRef.label,.description,.status,.catalogItem.label,.owners[0].value,.dateCreated,.costs.leaseRate.cost.amount,.costToDate.amount] | @csv' 

Soru

ve mevcut olduğunda virgülleri kaldırın.

Bunu yapmak için jq yolunu arıyorum; Ben sed veya awk kullanarak kabuk seviyesinde yapabilirdim, ancak CSV'yi oluşturmak için kullandığım komutla jq kullanarak mümkün olup olmadığını bilmek isterim.

Teşekkürler!

+0

jq komutu çalışmıyor – hek2mgl

+0

Haklısınız ve özür dileriz. JSON kodu bir ekstrakt oldu. Hala VRA çağrısı tarafından döndürülen tüm JSON'un bir özüdür, ancak şimdi değiştirdim ve * jq * örneği ile çalışmalıdır. Teşekkür – Benedetto

cevap

2

Düzenli ifadeler kullanarak değiştirmeleri gerçekleştirmek için gsub/2'u kullanabilirsiniz. Yani açıklama kısmı için, yerine koy.

(.description | gsub(","; "")) 
+0

işe yarıyor! Girişin etrafında parantez yoktu. Çok teşekkürler! – Benedetto

+0

Evet, operatörün önceliğine dikkat etmelisiniz. Boru düşündüğün kadar yüksek değil. –