我有一个类似于JSON的平面文件(不完全相同)。 最后的动机是把它转换成CSV(按照特定的顺序,与input的JSON文件不一样)并转储到数据库中。 现在由于input文件并不总是以相同的顺序AWK,剪切等不会有用的。 需要像HASHMAP。 附加样本input和预期输出。 build议请。
inputJSON文件示例(我有1000个文件,每个50K行,每个200列)
{"Field1":{"string":"Value,123"},"Field2":{"string":"564243"},"Field3":{"string":"SWCHP0001155"},"LOCATION":null,"OWNERUID":{"string":"655,34"}} {"Field1":{"string":"Value,456"},"Field2":{"string":"89565655"},"Field3":{"string":"SWCHP0001166"},"LOCATION":{"string":"BEACH,"},"OWNERUID":{"string":"65534"}} ........
输出CSV文件按特定顺序预期,可以按顺序(OWNERUID,LOCATION,Field1,Field2,Field3)
655;;34,null,Value;123,564243,SWCHP0001155 65534,BEACH;,Value;456,89565655,SWCHP0001166
我的想法到目前为止是做一些string操作改变如下的标准格式,将数据传输到哈希映射,获取需要和转储为CSV
如何比较两个巨大的文件csv与较less的时间
在UNIX中执行tr命令后,出现负号
无法在PHP中读取csv并将其传递给html文件中的javascript
Windows批处理脚本parsingCSV文件并输出文本文件
Bash脚本将date和时间列转换为.csv中的unix时间戳
中级标准格式:(可以更改,请提出build议)
Field1?Value;123,Field2?564243,Field3?SWCHP0001155,LOCATION?null,OWNERUID?655;;34 Field1?Value;456,Field2?89565655,Field3?SWCHP0001166,LOCATION?BEACH;,OWNERUID?65534 ........
注意:
值包含和其他特殊字符
我可以改变值有点像转换为分号(如上)
有NULL值要处理
使用VBS将XLS转换为CSV,但保持前导零
在bash中parsingCSV并分配variables
使用csvfix for linux对数值进行sorting – 将数字转换为string
jq是一个C工具,旨在处理JSON字符串。 它充当一次处理一个输入的过滤器(或过滤器链),并具有相当好的文档。 它可能在你的发行版中可用,或假装从源代码构建,而不是C编译器以外的小依赖。 在你的例子中,这应该足够了:
$ cat file.json | jq '[.OWNERUID.string,.LOCATION.string?,.Field1.string?,.Field2.string?,.Field3.string?]|join(";")' "655,34;;Value,123;564243;SWCHP0001155" "65534;BEACH,;Value,456;89565655;SWCHP0001166" $
或者,如果你想摆脱封闭的引号,一个sed过滤器可以删除它们:
$ cat ess.txt | jq '[.OWNERUID.string,.Field3.string?]|join(";")' | sed -e 's/^"(.*)"$/1/' 655,123;564243;SWCHP0001155 65534;BEACH,456;89565655;SWCHP0001166 $
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。