jq - 在 jq 过滤器后输出到 CSV 时额外 space
jq - Extra space when outputting to CSV after jq filter
遇到一个简单需求的问题。
- 发出 CURL 请求并存储在变量中
- 使用 JQ 从变量中解析 JSON 并输出到 CSV 文件。
当我尝试这样做时,出于某种原因,我在文件的第二行中获得了额外的前导 space。有没有办法配置 jq 不这样做?
代码:
output=`curl -v -k -H 'Content-Type: application/json' '<<URL>>' -d '<<PARAMS>>'`
csvOutput=`echo $output | jq --raw-output '.result .items[]|[.name,.key,.created,.updated]|@csv'`
echo $csvOutput >> out.csv
以下代码(全部在一行中)没有问题。但是我需要变量中的 curl 输出来执行一些检查,所以这个选项没有帮助。
echo "$(curl -v -k -H 'Content-Type: application/json' '<<URL>>' -d '<<PARAMS>>" | jq -r '.result .items[]|[.name,.key,.created,.updated]|@csv' >> out.csv
奇怪的是,当我从文件中读取 json 输出(取自 curl 响应)然后应用 jq 过滤器时,我没有发现问题。
cat response.json | jq -r '.result .items[]|[.name,.key,.created,.updated]|@csv' > out.csv
response.json(格式化) :
{
"result": {
"total_items": 22,
"total_pages": 1,
"items_per_page": 1000,
"current_page": 1,
"items": [
{
"key": "1",
"name": "Name 1",
"created": "2016-12-20T08:51:13Z",
"updated": "2016-12-20T09:29:08Z"
},
{
"key": "2",
"name": "Name 2",
"created": "2016-12-20T08:51:13Z",
"updated": "2016-12-20T09:29:08Z"
},
{
"key": "3",
"name": "Name 3",
"created": "2016-12-20T08:51:13Z",
"updated": "2016-12-20T09:29:08Z"
}
]
},
"id": 1
}
当您将结果写入 csv 文件时,您使用的是 echo $csvOutput >> out.csv
而不是 :
echo "$csvOutput" >> out.csv
双引号会保留换行符,参见this post
遇到一个简单需求的问题。
- 发出 CURL 请求并存储在变量中
- 使用 JQ 从变量中解析 JSON 并输出到 CSV 文件。
当我尝试这样做时,出于某种原因,我在文件的第二行中获得了额外的前导 space。有没有办法配置 jq 不这样做?
代码:
output=`curl -v -k -H 'Content-Type: application/json' '<<URL>>' -d '<<PARAMS>>'`
csvOutput=`echo $output | jq --raw-output '.result .items[]|[.name,.key,.created,.updated]|@csv'`
echo $csvOutput >> out.csv
以下代码(全部在一行中)没有问题。但是我需要变量中的 curl 输出来执行一些检查,所以这个选项没有帮助。
echo "$(curl -v -k -H 'Content-Type: application/json' '<<URL>>' -d '<<PARAMS>>" | jq -r '.result .items[]|[.name,.key,.created,.updated]|@csv' >> out.csv
奇怪的是,当我从文件中读取 json 输出(取自 curl 响应)然后应用 jq 过滤器时,我没有发现问题。
cat response.json | jq -r '.result .items[]|[.name,.key,.created,.updated]|@csv' > out.csv
response.json(格式化) :
{
"result": {
"total_items": 22,
"total_pages": 1,
"items_per_page": 1000,
"current_page": 1,
"items": [
{
"key": "1",
"name": "Name 1",
"created": "2016-12-20T08:51:13Z",
"updated": "2016-12-20T09:29:08Z"
},
{
"key": "2",
"name": "Name 2",
"created": "2016-12-20T08:51:13Z",
"updated": "2016-12-20T09:29:08Z"
},
{
"key": "3",
"name": "Name 3",
"created": "2016-12-20T08:51:13Z",
"updated": "2016-12-20T09:29:08Z"
}
]
},
"id": 1
}
当您将结果写入 csv 文件时,您使用的是 echo $csvOutput >> out.csv
而不是 :
echo "$csvOutput" >> out.csv
双引号会保留换行符,参见this post