मुझे सिंगल डिक्ट और डिक्ट्स की सूची दोनों के लिए समान सीएसवी आउटपुट की आवश्यकता है।

लेकिन मुझे समझ नहीं आ रहा है कि इसे jq के साथ कैसे बनाया जाए।

केस 1: इनपुट एक तानाशाही है:

$ curl --silent 'https://uinames.com/api/?amount=1' 
{"name":"Daniel","surname":"Gligor","gender":"male","region":"Romania"}

और मेरी संगत jq अभिव्यक्ति:

$ curl --silent 'https://uinames.com/api/?amount=1' |
  jq -r '[.name, .surname] | @csv'
"Angel","Sîrghie"

केस 2: इनपुट डिक्ट्स की सूची है:

$ curl --silent 'https://uinames.com/api/?amount=2' 
[{"name":"Summer","surname":"Lee","gender":"female","region":"Canada"},{"name":"Július","surname":"Dzurjanin","gender":"male","region":"Slovakia"}]

मेरी अभिव्यक्ति:

$ curl --silent 'https://uinames.com/api/?amount=2' |
> jq -r '.[] | [.name, .surname] | @csv'
"Francisca","Navarro"
"Larisa","Dănescu"

मैंने if/else, select(), path(), //, आदि के साथ बहुत सारे वेरिएंट आज़माए। दुर्भाग्य से, मैं वर्किंग एक्सप्रेशन नहीं बना सकता।

0
viktorkho 13 जिंदा 2020, 16:24

1 उत्तर

सबसे बढ़िया उत्तर

type आपका मित्र है:

if type == "array" then .[] else . end
| [.name, .surname]
| @csv'
0
peak 13 जिंदा 2020, 18:33