我试图使用JQ来处理没有列标题的CSV:
cat "input.csv"
"12345678901234567890","2019-03-19",12是否有更优雅和可读的方法来删除第一个和第二个字段的转义引号
理想情况下,我希望有一个可重用的脚本,该脚本从artbitrary构建JSON,给出一个文件和其中作为命令行参数传递的字段列表。
当前的JQ脚本和输出:
cat "input.csv" |
jq \
--raw-input '
. |
split("\n") |
map( split(",")) |
.[0] |
{
ID: (.[0] | fromjson),
date: (.[1] | fromjson),
count: (.[2] | tonumber)
}'
{
"ID": "12345678901234567890",
"date": "2019-03-19",
"count": 1
}在没有| fromjson的情况下,相同脚本的输出使用引号,这将导致引号,我想避免:
{
"ID": "\"12345678901234567890\"",
"date": "\"2019-03-19\"",
"count": 1
}发布于 2019-03-19 20:50:31
可以将对jq的调用简化为:
jq -R '
split(",")
| map(fromjson)
| {ID: .[0], date: .[1], count: .[2] }'通用解决方案
jq -R --argjson header '["ID", "date", "count"]' '
split(",")
| map(fromjson)
| [ $header, . ]
| transpose
| reduce .[] as $kv ({}; .[$kv[0]] =$kv[1]) '如果要在文件中指定标头,请使用--argfile命令行选项。
https://stackoverflow.com/questions/55247622
复制相似问题