Bagaimana saya bisa melewatkan output JSON pada shell?
Misalnya, Amazon Web Services menyediakan CLI untuk mengambil status mesin virtual Anda:
$ aws ec2 describe-instances <my_instance_id>
Tetapi perintah mengembalikan string JSON. Output dari perintah itu terlihat seperti ini:
$ aws ec2 describe-instances x12345
{
"Reservations" :
{
"OwnerId": "1345345"
"Groups": [],
"SecurityGroups": [
{
"Foo" : "yes"
"Bar" : "no
}
]
}
}
Apakah ada built-in shell yang dapat digunakan untuk mem-parsing output JSON?
Sebagai contoh, saya ingin menangkap dalam variabel shell FOO
, berikut ini output["Reservations"]["SecurityGroups"][0]{"Foo"}
.
Jika itu membantu, saya secara khusus tertarik pada solusi yang dapat bekerja dari Zsh.
--output text
jika Anda ingin mengurai shell tanpa menggunakan alat eksternal seperti jshon
.
jshon
untuk pertama kalinya, saya mengikuti tautan Anda. Setelah membaca itu, saya hanya bisa mengatakan bahwa saya pergi dengan sangat senang bahwa, kebetulan, saya mendengar dan menginstalnya jq
terlebih dahulu. Saya pikir Anda mungkin ingin mendengarnya juga jika Anda belum - itu tidak mengganggu dengan semua saklar baris perintah dan dapat melakukan regex sendiri - bahkan memungkinkan Anda untuk mendeklarasikan fungsi dan variabel jika Anda mau. Lihat jawabannya di sini tentang hal itu jika Anda tertarik.