我有一个奇怪的CSV,其中一列是相当大的JSON数据,另一列是名称。为了清晰起见,显示了正确的JSON格式,但实际文件是扁平的,没有换行符字符。
name,
{
"field1":
{"name":"foo",
"email":"test@gmail.com"},
"field2":{
"subfield":{
"subfield2":{
"active":1,
"passive":11,
"running":111
}
}
}
}
输入没有漂亮的格式化...
name,{"field1":{"name":"foo","email":"test@gmail.com"},"field2":{"subfield":{"subfield2":{"active":1,"passive":11,"running":111}}}}
我试图将子字段2的名称和所有唯一值输入输出(理想情况下为CSV)。
name,
active passive running
问题是字段的数量不是常数,子字段的名称也不是常数。我尝试过使用jq、米勒和sed/awk,但运气不好,因为它结合了一个巨大的JSON blob和CSV数据。
3条答案
按热度按时间lvmkulzt1#
如果在示例输入中运行
你得到
您编写的示例输出是错误的,因为如果它是一个单字段CSV,则名称后没有
,
,没有其他字段但我可能不明白你想要什么
qco9c6ql2#
你可以使用你最喜欢的CSV到TSV转换器将CSV转换为TSV,然后通过jq运行它,如下所示:
niknxzdl3#
我花了一些时间与sed,它得到了我所需要的使用以下: