我正试图使用
.import
作用据我所知,sqlite3.import期望JSON数据为每行一行,其中项目数与表列匹配,并由分隔
.separate
.
如果我定义
.separator="\t"
,我试图使用jq创建一个重新格式化的json文件,但遇到了一个错误。
这是我的测试
$echo '[{"a1":{"b1":1,"c1":{"c1":"test","c2":null}}},{"a2":{"b2":1,"c":{"c2":"test","c2":null}}}]' | jq -c '.[] | to_entries'
[{"key":"a1","value":{"b1":1,"c1":{"c1":"test","c2":null}}}]
[{"key":"a2","value":{"b2":1,"c":{"c2":null}}}]
我的目标是创建以下以制表符分隔的行(\t下面表示制表符
\x09
)
"a1"\t{"b1":1,"c1":{"c1":"test","c2":null}}
"a2"\t{"b2":1,"c":{"c2":null}}
但我没能单独用jq实现这种格式。
我可以用新的线把它分开
$echo '[{"a1":{"b1":1,"c1":{"c1":"test","c2":null}}},{"a2":{"b2":1,"c":{"c2":"test","c2":null}}}]' | jq -c '.[] | to_entries |.[] | [.key, .value] | .[]'
"a1"
{"b1":1,"c1":{"c1":"test","c2":null}}
"a2"
{"b2":1,"c":{"c2":null}}
但是如果我使用join(“\t”),它会抱怨不能将字符串与对象连接起来
echo '[{"a1":{"b1":1,"c1":{"c1":"test","c2":null}}},{"a2":{"b2":1,"c":{"c2":"test","c2":null}}}]' | jq -c '.[] | to_entries | .[] | [.key, .value] | join("\t")'
jq: error (at <stdin>:1): string ("a1\t") and object ({"b1":1,"c1...) cannot be added
我可以使用perl或sed对新行分隔的文本进行后处理,以获得我想要的内容,但我希望学习如何正确地使用
jq
.
这可能吗?