Xử Lý JSON Trên Giao Diện Dòng Lệnh Linux - Viblo
Có thể bạn quan tâm
Bài đăng này đã không được cập nhật trong 7 năm
Như chúng ta đã biết, JSON là 1 định dạng dữ liệu mà hiện này được sử dụng rất phỗ biến. Hầu hết các dịch vụ API và data sevices đều sử dụng định dạng JSON. Câu hỏi đặt ra là, làm thế nào để thao tác với định dạng JSON trên giao điện dòng lệnh(command-line)? Bài viết này mình xin giới thiệu cho các bạn 1 công cụ đơn giản và gọn nhẹ để giải quyết vấn đề trên, đó chính là**jq**
Vậyjq là gì?
Trên trang chủ, jq được định nghĩa là:
jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease thatsed,awk,grepand friends let you play with text.
Chan sờ lết to Vietnamese thì chúng ta có thể hiểu:
jq là một JSON processor, nó giống như sed nhưng cho JSON data. Dùng nó kết hợp vớigrep,sedvàsed. Ta có thể lọc, cắt, ghép các dữ liệu JSON trên giao diện dòng lệnh của Linux.
Cài đặt
Có thể dễ dàng cái đặt theo tài liệu tại https://stedolan.github.io/jq/download Hoặc bằng lệnh:
# download directly into ~/bin curl http://stedolan.github.io/jq/download/linux64/jq -o ~/bin/jq # give it executable permissions chmod a+x ~/bin/jqĐối với Arch Linux, có thể cài đặt từ pacman -S jq --noconfirm
Sử dụng jq
Giờ hãy bắt đầu xem jq có thể làm được gì. Ví dụ mình có một file JSON như sau:
$ cat test.json [ { "displayName" : "master", "offline" : false }, { "displayName" : "agent-1", "offline" : true }, { "displayName" : "agent-2", "offline" : false }, { "displayName" : "celery", "offline" : false }, { "displayName" : "kelp", "offline" : false }, { "displayName" : "spinach", "offline" : false }, { } ]Lấy tất cả các đối tượng
~$ jq '.' test.json ~$ jq '.[]' test.json { "displayName": "master", "offline": false } { "displayName": "agent-1", "offline": true } { "displayName": "agent-2", "offline": false } { "displayName": "celery", "offline": false } { "displayName": "kelp", "offline": false } { "displayName": "spinach", "offline": false } {}Kiểm tra độ dài
Giờ thử kiểm tra xem có bao nhiêu đối tượng trong file JSON đó
~$ jq 'length' test.json 7Kiểm tra mỗi đối tượng có bao nhiêu thuộc tính
~$ jq '.[] | length' test.json 2 2 2 2 2 2 0Lấy thuộc tính của đối tượng
Tiếp đến thử lấy một đối tượng trong file đó. Ví dụ mình muốn lấy phần tử đầu tiên.
~$ jq '.[0]' test.json { "displayName": "master", "offline": false }Giờ thử lấy một thuộc tính của một đối tượng. Ví dụ muốn kiểm tra trạng thái của đối tượng số số 2.
~$ jq '.[1].offline' test.json falseSort theo một thuộc tính
Ví dụ mình muốn sort theo displayName
~$ jq 'sort_by(.displayName)' test.json [ {}, { "displayName": "agent-1", "offline": true }, { "displayName": "agent-2", "offline": false }, { "displayName": "celery", "offline": false }, { "displayName": "kelp", "offline": false }, { "displayName": "master", "offline": false }, { "displayName": "spinach", "offline": false } ]So sánh, điều kiện
Liệt kê các đối tượng có tên là master
~$ jq '.[].displayName == "master"' test.json true false false false false false falseLời kết
Trên đây là một số xử lý đơn giản, để tìm hiểu thêm về jq bạn có thể truy cập vào trang https://stedolan.github.io/jq/manual/ để đọc thêm. Hẹn gặp lại trong bài viết tiếp theo.
References
- https://stedolan.github.io/jq/manual/
- https://kipalog.com/posts/Xu-ly-JSON-tren-giao-dien-dong-lenh-Linux
- http://www.compciv.org/recipes/cli/jq-for-parsing-json/
All rights reserved
Từ khóa » Hàng Jq Là Gì
-
Jq Trong Ngôn Tình Là Gì
-
Điều Kiện Vận Chuyển - JQ | Jetstar
-
Jq Nghĩa Là Gì? - Từ-điể
-
Những Cụm Từ Cần Hiểu Phổ Biến Nhất Trong Ngôn Tình - Wattpad
-
Jq Là Gì, Jq Viết Tắt, định Nghĩa, ý Nghĩa
-
JQ Là Gì? Nghĩa Của Từ Jq - Từ Điển Viết Tắt - Abbreviation Dictionary
-
Khám Phá 9 Loại Hình Thông Minh Của Con Người - 123Job
-
JQ Là Gì? -định Nghĩa JQ | Viết Tắt Finder
-
Mật Ngữ Ngôn Tình - Giúp Bạn Hiểu Hơn Về Thế Giới Lãng Mạng | Tings
-
[Tổng Hợp] Một Vài Thuật Ngữ Thông Dụng Trong Tiểu Thuyết Trung Quốc
-
Chỉ Số Thông Minh Thực Thi Nhiệm Vụ Jq Là Gì ? Jq Nghĩa Là Gì
-
[Tổng Hợp] Một Vài Từ Ngữ Thông Dụng Trong Ngôn Tình - Tử Minh Cung
-
Qj Là Gì - Thuật Ngữ Viết Tắt Trong Đam
-
Chỉ Số Thông Minh Thực Thi Nhiệm Vụ Jq Là Gì, 9 Chỉ Số Thông ...