CSV'YE dışa aktarırken jq'nun satırsonu karakterini yorumlamasına nasıl izin verilmez

0

Soru

Bir tmp dosyasında saklanan aşağıdaki JSON içeriğini dönüştürmek istiyorum.jsonname

{
    "results": [
        [
           {
               "field": "field1",
               "value": "value1-1"
           },
           {
               "field": "field2",
               "value": "value1-2\n"
           }
        ],
        [
           {
               "field": "field1",
               "value": "value2-1"
           },
           {
               "field": "field2",
               "value": "value2-2\n"
           }
        ]
    ]
}

CSV çıktısına

"field1","field2"
"value1-1","value1-2\n"
"value2-1","value2-2\n"

Bunu kullandığımda jq ancak komuta,

 cat tmp.json | jq -r '.results | (first | map(.field)), (.[] | map(.value)) | @csv'

Bu sonucu alıyorum:

"field1","field2"
"value1-1","value1-2
"
"value2-1","value2-2
"

Nasıl olmalı jq istenen CSV sonucunu elde etmek için komut yazılmalı mı?

export-to-csv jq json
2021-11-24 06:09:08
2

En iyi cevabı

3

Yalnızca jq çözümü için şunları kullanabilirsiniz gsub("\n"; "\\n"). Böyle bir şeyle giderdim.:

.results
| (.[0] | map(.field)),
  (.[]  | map( .value | gsub("\n"; "\\n")))
| @csv

Json'unuzu kullanmak ve bunu-r komut satırı seçeneğiyle çağırmak:

"field1","field2"
"value1-1","value1-2\n"
"value2-1","value2-2\n"
2021-11-24 06:57:07
1

Yeni satırlar işleyebileceğiniz tek şeyse, belki bir dize değiştirme işlemi yapabilirsiniz.

cat tmp.json | jq -r '.results | (first | map(.field)), (.[] | map(.value) | map(gsub("\\n"; "\\n"))) | @csv'
2021-11-24 06:48:27

@rchrome, bu bir Segmentation fault (core dumped) CentOS7 makinemde. Sebebini bilmiyorum.
hermit.crab

hmm ilginç, ubuntu 16.04 makinemde jq sürüm 1.5.1 ile çalışıyor
rchome

@rchrome, düzenlenmiş çözüm şimdi CentOS7 makinemde çalışıyor. teşekkür ederim.
hermit.crab

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................