jq, czyli JSON w terminalu
jq - narzędzie do pracy z plikami JSON. Umożliwia filtrowanie, wyodrębnianie, modyfikację i przekształcanie danych. Działa w terminalu, zatem idealnie nadaje się do automatyzacji.
Instalacja
Zwykle dostepne zaraz po instalacji systemu. Jeśli nie:
Debian/Ubuntu:
Na Red Hat/AlmaLinux:
Przykładowy plik data.json
Użyjemy takiej zawartości JSON:
[
{
"name": "Ann",
"age": 30,
"skills": ["Python", "Bash"]
},
{
"name": "John",
"age": 35,
"skills": ["Go", "Linux", "Docker"]
}
]
Podstawy
Wyświetlenie sformatowanego JSON-a:
Wyświetla cały plik data.json z kolorowaniem i wcięciami. Kropka (.) oznacza wszystko
Wyciąganie imion:
.- cała tablica JSON[]- iteracja po jej elementach.name- wartość kluczanamez każdego obiektu
Wynik:
Filtrowanie po wieku:
select(...)pokazuje tylko elementy spełniające warunek.age > 32- sprawdza wartość polaage
Wynik:
Wyciąganie wszystkich umiejętności:
.skills[]- rozbija każdą listęskillsna osobne elementy
Wynik:
Lista unikalnych pól:
[...]- zamyka dane w nową tablicęunique- usuwa duplikaty
Wynik:
Modyfikacja danych
Dodanie pola active: true:
Dodaje nowe pole active do każdego obiektu
Wynik:
[
{
"name": "Ann",
"age": 30,
"skills": ["Python", "Bash"],
"active": true
},
{
"name": "John",
"age": 35,
"skills": ["Go", "Linux", "Docker"],
"active": true
}
]
Konwersja do CSV:
Wynik:
jq + curl - analiza danych z API
Darmowe API pogodowe wttr.in pozwala pobrać dane w formacie JSON bez klucza API
Przykład: pogoda dla Poznania
wttr.in/Poznan?format=j1- dane pogodowe.current_condition[0].temp_C- temperatura w °C
Wynik:
Oczywiście w zalezności od aktualnej pogody ;)Walidacja poprawności JSON:
Jeśli JSON jest poprawny - brak wyjścia. Jeśli nie - błąd składni.
W skryptach Bash:
Narzędzia
- 🎮 Playground online: https://jqplay.org
- 🌦️ API pogodowe bez klucza: https://wttr.in/:help