मेरे पास एक स्ट्रिंग है जो एक लंबी स्ट्रिंग (कोई नई लाइन नहीं) के रूप में बनाई गई है:

<NAME1>ID1>CODE1a>CODE1b>><NAME2>ID2>CODE2a>CODE2b>><NAME3>ID3>CODE3a>CODE3b>>

विचार इस स्ट्रिंग को JSON में बदल देता है:

{
  "ID1": [
    "NAME1",
    "CODE1a",
    "CODE1b"
  ],
  "ID2": [
    "NAME2",
    "CODE2a",
    "CODE2b"
  ],
  "ID3": [
    "NAME3",
    "CODE3a",
    "CODE3b"
  ]
}

सवाल यह है कि मुझे एक कॉमांड में इसकी आवश्यकता है (cat testfile.txt | sed "..." | tr "..." जैसा कुछ)

मैंने sed, tr, jq का उपयोग करने की कोशिश की है, लेकिन कोई सफलता नहीं मिली, और मैं पूरी तरह से फंस गया हूं। अग्रिम में धन्यवाद

1
Filipe Pires 10 अप्रैल 2020, 04:17

1 उत्तर

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

पूरी बात सिर्फ jq का उपयोग करके की जा सकती है, उदा .:

jq -R '
  sub("^<";"")
  | split(">><")
  | map(split(">"))
  | map( { (.[1]) : (.[0:1] + (.[2:] | map(select(.!="")))) } )
  | add
'
1
peak 12 अप्रैल 2020, 01:52