jq är en command-line JSON parser. Som kan användas precis lika enkelt som sed,awk och grep används för text.
Installation
#tab1|CentOS 7 #tab2|Ubuntu 16.04
Kör sedan:
Användning
==========
Skaffa lite exempel JSON via Hackernets API där vi söker på alla sidor
som innehåller ordet Cisco:
`curl '`[`https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json`](https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json)`'`
Pretty-printa JSON koden så den blir läsbar:
`curl '`[`https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json`](https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json)`' | jq '.'`
Filtrera ut vilka sidor du hitta:
`curl '`[`https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json`](https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json)`' | jq '.query.search[].title'`
Filtrera ut titeln och exempel texten från sidan:
`curl '`[`https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json`](https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json)`' | jq '.query.search[] | {titel: .title, text: .snippet}'`
Sortera sidorna efter lägst antal ord:
`curl '`[`https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json`](https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json)`' | jq '.query.search | sort_by(.wordcount) | .[].title'`
Skapa en URL till varje sida:
`curl '`[`https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json`](https://hackernet.se/api.php?action=query&list=search&srsearch=cisco&format=json)`' | jq '.query.search[] | ("`[`https://hackernet.se/w/"+`](https://hackernet.se/w/%22+)`""+.title)'`
Tips'N'Tricks
=============
Använd [jqplay](https://jqplay.org/) för att enkelt skriva jq filter.
sudo yum install jq
sudo apt-get install jq