curl -s 'https://api.github.com/orgs/github/repos' | jq -r '.[] | [.id, .name, .stargazers_count] | @csv'
The curl calls a GitHub API endpoint to get repository infos of the github organization in JSON format. The -s (or --silent) flag makes curl silent, suppressing messages about progress or errors.
The JSON content we want to filter using the subsequent jq looks something like this (showing here just the fields relevant for the example, but there are many many more):
[
{
"id": 3222,
"name": "media",
"stargazers_count": 293
},
{
"id": 15929,
"name": "albino",
"stargazers_count": 222
},
{
"id": 15930,
"name": "hubahuba",
"stargazers_count": 47
},
...
]
The jq command filters and transforms the JSON content:
.[] for each object in the JSON array input, ...[.id, .name, .stargazers_count] create a JSON array from the object's fields ...@cvs convert a JSON array to a single string of comma separated values.The -r (or --raw-output) flag makes jq print the output as raw values, which makes string values printed without enclosing double-quotes.
The output when using @csv:
3222,"media",293
15929,"albino",222
15930,"hubahuba",47
15931,"jquery-hotkeys",95
15932,"jquery-relatize_date",112
The output when using @tsv:
3222 media 293
15929 albino 222
15930 hubahuba 47
15931 jquery-hotkeys 95
15932 jquery-relatize_date 112