PowerShell [डुप्लिकेट] का उपयोग करके JQ में स्ट्रिंग शाब्दिक
मुझे Powershell से काम करने के लिए JQ स्ट्रिंग शाब्दिक नहीं मिल सकते हैं। उदाहरण के लिए, यह बैश में एक सुंदर JSON ऑब्जेक्ट को आउटपुट करता है, लेकिन पॉवर्स में विफल रहता है:
PS C:\temp> jq --null-input '{"key":"val"}'
jq: error: val/0 is not defined at <top-level>, line 1:
{key:val}
jq: 1 compile error
पहले मुझे गलत उद्धरण का संदेह था, लेकिन जैसा कि मैं उम्मीद करता हूं कि Write-Output '{"key":"val"}'
आउटपुट {"key":"val"}
।
मैं एक फ़ाइल में अपने JQ फ़िल्टर लिखकर इसके चारों ओर काम कर सकता हूं। .NET का उपयोग करके WriteAllText
यह सुनिश्चित करता है कि फ़ाइल बिना BOM के UTF-8 के रूप में एन्कोड हो जाए।
PS C:\temp> [System.IO.File]::WriteAllText('basic.jq', '{"key":"val"}')
PS C:\temp> jq --null-input --from-file basic.jq
{
"key": "val"
}
मैं JQ फ़िल्टर को प्रोटोटाइप करने और PowerShell स्क्रिप्ट्स में उन्हें एकीकृत करने के लिए अधिक फुर्तीला दृष्टिकोण की तलाश कर रहा हूं।
संस्करण: J64 1.6 win64 के लिए, PSVersion 5.1.18362.1171
जवाब
पॉवर्सशेल आपको '..'
एक्सप्रेशन के अंदर डबल-कोट्स से बचना चाह सकता है । प्रयत्न
jq --null-input '{ "key": \"val\" }'
या नीचे के प्रमुख नामों के रूप में jq
एक स्पष्ट उद्धरण की आवश्यकता नहीं है
jq --null-input '{ key: \"val\" }'
के jq
तहत मैनुअल से - चालान जक
विंडोज कमांड शेल (
cmd.exe
) का उपयोग करते समय कमांड-लाइन (-f program-file
विकल्प के बजाय ) पर दिए जाने पर अपने jq प्रोग्राम के आसपास दोहरे उद्धरण चिह्नों का उपयोग करना सबसे अच्छा है , लेकिन तब jq प्रोग्राम में डबल-कोट्स को बैकस्लैश भागने की आवश्यकता होती है।