2016-12-27 9 views
-1

単純な要件の問題に直面しています。jq - jqフィルタの後にCSVに出力するときの余分なスペース

  1. CSVファイルにJQと出力を使用して変数から変数
  2. 解析JSONでCURLリクエストとストアを作成します。

私がそれをやろうとすると、何らかの理由で2行目のファイルに余分な先頭スペースが追加されています。これをしないように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 

次のコード(すべて1行では)問題は発生しません。しかし、いくつかのチェックを行うには変数にカール出力が必要なので、このオプションは役に立ちません。

echo "$(curl -v -k -H 'Content-Type: application/json' '<<URL>>' -d '<<PARAMS>>" | jq -r '.result .items[]|[.name,.key,.created,.updated]|@csv' >> out.csv 

私は、ファイルから(カール応答から取られた)JSON出力を読み、その後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 
} 

答えて

2

あなたはCSVファイルにあなたの結果を書くとき、あなたはecho $csvOutput >> out.csvを使用して代わりにされています

echo "$csvOutput" >> out.csv 

を二重引用符がします改行を保持する。this post