Milister
Milister

Reputation: 658

Curl output to CSV-BASH

with this command i get JSON output:

curl -s -H "Accept: application/json" -X GET "http://192.168.253.21:4440/api/20/project/test/executions?authtoken=kH44NoX35bp1zxohgkMtsOIC9H9tw6UI" | jq -r '.|[.executions[] | select(.job.name != null) | select(.job.name|contains("JIRA_Create_Subtask")) ] | sort_by(.id) | reverse | .[0] | [.status, .job.name, ."date-started".date, ."date-ended".date, .job.project]' > /tmp/1.txt

cat /tmp/1.txt
[
  "succeeded",
  "JIRA_Create_Subtask",
  "2018-04-16T10:00:00Z",
  "2018-04-16T10:00:02Z",
  "test"
]

How to get this output in csv format:

"succeeded","JIRA_Create_Subtask","2018-04-16T10:00:00Z","2018-04-16T10:00:02Z","test"

Upvotes: 1

Views: 13509

Answers (2)

oliv
oliv

Reputation: 13249

If you don't have any space or square brackets in your values, you can use tr:

cat 1.txt | tr -d '[]\n '

tr deletes any [, ], cariage return or space characters.

Upvotes: 0

anubhava
anubhava

Reputation: 785256

You can use @csv format in jq:

curl -s -H "Accept: application/json" -X GET "http://192.168.253.21:4440/api/20/project/test/executions?authtoken=kH44NoX35bp1zxohgkMtsOIC9H9tw6UI" |
jq -r '.|[.executions[] |
   select(.job.name != null) |
   select(.job.name|contains("JIRA_Create_Subtask")) ] |
   sort_by(.id) | reverse | .[0] |
   [.status, .job.name, ."date-started".date, ."date-ended".date, .job.project] |
   @csv'

Upvotes: 4

Related Questions