Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn dùng lệnh Jq Linux để xử lý dữ liệu JSON chi tiết

    Nguyễn Hưng

    Ngày đăng:

    09/02/2026

    Cập nhật lần cuối:

    09/02/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    09/02/2026

    Cập nhật lần cuối:

    09/02/2026

    Mục lục

    Jq trên Linux là công cụ dòng lệnh dùng để đọc, lọc và biến đổi dữ liệu JSON trực tiếp trong terminal. Công cụ này giúp xử lý hiệu quả JSON từ file cấu hình, API, log hệ thống, Docker, Kubernetes và các dịch vụ cloud mà không cần viết thêm chương trình. Trong bài viết này, mình sẽ cùng bạn tìm hiểu yêu cầu môi trường, cách cài đặt và các thao tác thực tế với lệnh jq để tự động hóa công việc hằng ngày trên Linux.

    Những điểm chính

    • Khái niệm: Hiểu rõ jq là một công cụ xử lý JSON trên dòng lệnh, giúp bạn nhanh chóng phân tích, lọc và biến đổi dữ liệu JSON mà không cần viết script phức tạp.
    • Lý do sử dụng: Nắm được vì sao jq trở thành công cụ cần thiết khi làm việc với JSON trong Linux, đặc biệt trong các tác vụ DevOps, API và tự động hóa.
    • Điều kiện sử dụng: Biết các yêu cầu cần có để dùng lệnh jq hiệu quả, bao gồm môi trường hệ điều hành và dữ liệu JSON hợp lệ.
    • Cài đặt và chuẩn bị dữ liệu: Nắm được quy trình cài đặt jq trên Linux và cách chuẩn bị file JSON mẫu để thực hành và kiểm thử.
    • Định dạng và xem JSON: Biết cách dùng jq để format JSON dễ đọc hơn và xem toàn bộ hoặc từng phần nội dung JSON một cách nhanh chóng.
    • Trích xuất dữ liệu: Hiểu cách lấy giá trị từ JSON ở nhiều mức khác nhau, từ giá trị gốc đến mảng và đối tượng con.
    • Lọc dữ liệu theo điều kiện: Nắm được cách lọc, trích xuất các trường cụ thể trong JSON nhằm phục vụ nhu cầu phân tích và xử lý dữ liệu chính xác hơn.
    • Xử lý nâng cao: Biết cách sắp xếp, thống kê và đếm dữ liệu JSON bằng jq để phục vụ các bài toán phân tích phức tạp.
    • Kết hợp với lệnh khác và API: Hiểu cách sử dụng jq cùng các lệnh Linux phổ biến và API để xử lý dữ liệu JSON theo luồng tự động.
    • Ứng dụng trong Bash Script: Nắm được cách dùng jq trong Bash Script để tự động hóa quy trình, đồng thời biết khi nào nên dùng jq và khi nào nên chuyển sang giải pháp khác như Python.
    • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lệnh jq Linux.

    Jq Linux là gì?

    Jq trong Linux là một công cụ dòng lệnh chuyên dùng để phân tích, lọc và biến đổi dữ liệu ở định dạng JSON, cho phép thao tác trực tiếp với JSON ngay trong terminal mà không cần mở trình soạn thảo hoặc viết thêm chương trình riêng. Công cụ này được thiết kế như một JSON processor với cú pháp riêng, hỗ trợ đọc dữ liệu từ file, từ kết quả của lệnh khác hoặc từ API, sau đó áp dụng các biểu thức jq để trích xuất trường, lọc theo điều kiện, duyệt mảng và tái cấu trúc lại dữ liệu JSON theo nhu cầu.

    Jq trong Linux là một công cụ dòng lệnh chuyên dùng để phân tích, lọc và biến đổi dữ liệu ở định dạng JSON
    Jq trong Linux là một công cụ dòng lệnh chuyên dùng để phân tích, lọc và biến đổi dữ liệu ở định dạng JSON

    Jq được phát triển bằng ngôn ngữ C nên có kích thước nhỏ, tốc độ xử lý nhanh và có thể sử dụng trên hầu hết các bản phân phối Linux. Đồng thời, nó cũng hoạt động tốt khi kết hợp với các lệnh khác trong pipeline như curl, cat hay grep để hình thành các chuỗi xử lý dữ liệu linh hoạt trên dòng lệnh.

    Nhờ cơ chế hoạt động dựa trên filter và pipeline, jq cho phép chuyển đổi JSON thô thành dữ liệu có cấu trúc rõ ràng, dễ đọc. Điều này giúp mình dễ dàng tích hợp jq vào script Bash, hỗ trợ hiệu quả các tác vụ liên quan đến API, log hệ thống, DevOps và Cloud trong môi trường Linux.

    Vì sao cần dùng jq trong Linux?

    Trong môi trường làm việc với API, log, Docker, Kubernetes hay các hệ thống cloud, JSON xuất hiện liên tục và việc thao tác trực tiếp trên dòng lệnh với lệnh jq mang lại nhiều lợi ích nổi bật như sau:

    • JSON là định dạng dữ liệu mặc định trong nhiều hệ thống hiện đại: Phần lớn API, công cụ CLI, dịch vụ cloud, container platform hay hệ thống giám sát đều trả về dữ liệu dưới dạng JSON, nên việc nắm được lệnh jq giúp phân tích và khai thác các phản hồi này trực tiếp trên Linux mà không cần thêm ứng dụng trung gian.
    • JSON thô khó đọc và khó tìm thông tin khi dữ liệu lớn hoặc lồng nhau: Các cấu trúc JSON nhiều cấp, chứa mảng và đối tượng lồng nhau rất khó quan sát nếu chỉ dùng lệnh cat hoặc less. Trong khi đó, lệnh jq có thể định dạng lại, hiển thị theo cấu trúc và chỉ giữ lại phần thông tin cần thiết.
    • Jq hỗ trợ lọc và trích xuất dữ liệu có chọn lọc: Thông qua biểu thức filter, lệnh jq cho phép chọn từng trường, lọc theo điều kiện, duyệt mảng, nhóm dữ liệu, từ đó giảm lượng thông tin dư thừa và tập trung vào các giá trị phục vụ kiểm tra, debugging hoặc báo cáo.
    • Tăng hiệu quả khi kết hợp với pipeline trên dòng lệnh: Jq hoạt động tốt khi nhận đầu vào từ các lệnh như curl, wget, cat và trả về kết quả đã xử lý để tiếp tục đưa vào các lệnh khác, giúp xây dựng chuỗi xử lý phức tạp chỉ bằng shell mà không phải viết thêm mã nguồn riêng.
    • Tối ưu tự động hóa trong script Bash và công việc DevOps: Khi đưa lệnh jq vào script, quản trị viên và DevOps có thể tự động đọc JSON cấu hình, phản hồi API, log hệ thống và ra quyết định dựa trên dữ liệu đó (bao gồm đếm, so sánh, kiểm tra trạng thái), giúp chuẩn hóa quy trình và giảm thao tác thủ công trên server Linux.
    Jq Linux hỗ trợ lọc và trích xuất dữ liệu có chọn lọc
    Jq Linux hỗ trợ lọc và trích xuất dữ liệu có chọn lọc (Nguồn: Internet)

    Điều kiện sử dụng lệnh jq

    Để sử dụng lệnh jq trên Linux một cách ổn định và tận dụng hết khả năng xử lý JSON, môi trường làm việc cần đáp ứng một số yêu cầu cơ bản sau:

    • Hệ điều hành hỗ trợ môi trường dòng lệnh Linux: Jq được thiết kế cho các hệ thống Unix-like nên cần chạy trên các bản phân phối Linux hoặc môi trường tương thích (Ubuntu, Debian, CentOS, AlmaLinux, Arch Linux, WSL, container Linux), nơi có sẵn terminal để thao tác với lệnh.
    • Quyền cài đặt gói phần mềm hoặc quyền ghi thư mục người dùng: Để cài jq thông qua trình quản lý gói như apt, yum, dnf, pacman hoặc tải binary về thư mục ~/bin hay /usr/local/bin, người dùng cần quyền sudo hoặc ít nhất có quyền ghi vào thư mục cài đặt.
    • Đã cài đặt jq trên hệ thống: Sau khi cài từ repository của bản phân phối hoặc tải trực tiếp binary, bạn cần kiểm tra bằng jq --version để đảm bảo lệnh jq sẵn sàng sử dụng trong PATH, nếu lệnh không được nhận diện thì cần bổ sung đường dẫn hoặc cài đặt lại.
    • Có nguồn dữ liệu JSON để thực hành và khai thác: jq làm việc với dữ liệu JSON được đọc từ file, từ output của lệnh khác (ví dụ curl, wget) hoặc từ API trả về JSON, vì vậy người dùng cần chuẩn bị file JSON mẫu, endpoint API hoặc công cụ tạo JSON để áp dụng các filter jq.
    • Biết cách thao tác cơ bản với terminal và pipeline: Việc sử dụng jq thường gắn liền với các lệnh như cat, curl, dấu | pipeline và chuyển hướng output sang file, nên người dùng cần nắm các thao tác CLI cơ bản để kết hợp jq trong thực tế.
    Điều kiện sử dụng lệnh jq
    Điều kiện sử dụng lệnh jq

    Các bước cài đặt và chuẩn bị dữ liệu JSON

    Bước 1: Cài đặt jq trên Linux

    Bước đầu tiên là cài jq lên hệ điều hành Linux để có thể thao tác với dữ liệu JSON trực tiếp trên dòng lệnh. Việc cài đặt có thể thực hiện qua trình quản lý gói của từng bản phân phối hoặc bằng cách tải binary từ trang dự án jq. Sau đó, bạn kiểm tra lại bằng lệnh phiên bản để chắc chắn công cụ đã hoạt động. Dưới đây là các lệnh cài đặt jq cho từng bản phân phối của Linux:

    • Đối với Ubuntu / Debian:
    sudo apt update
    sudo apt install jq -y
    • Đối với CentOS / AlmaLinux / Rocky Linux (hoặc tương tự):
    sudo yum install jq -y
    # hoặc
    sudo dnf install jq -y
    • Cài bằng binary:

    Bạn tải từ trang dự án jq, chép vào ~/bin hoặc /usr/local/bin và cấp quyền thực thi, ví dụ:

    curl -L https://jqlang.org/download/linux64/jq -o ~/bin/jq
    chmod a+x ~/bin/jq

    Sau khi cài xong, bạn chạy lệnh:

    jq --version

    Nếu lệnh trả về phiên bản (ví dụ jq-1.6), điều đó cho thấy lệnh jq đã được cài đặt thành công và sẵn sàng sử dụng trong PATH.

    Bước 2: Chuẩn bị file JSON mẫu để thực hành

    Tiếp theo, bạn cần chuẩn bị một file JSON đủ chi tiết để dễ dàng minh họa các thao tác đọc, lọc, trích xuất, sắp xếp và thống kê với jq. Cấu trúc JSON nên có cả các trường đơn lẻ và một mảng chứa nhiều đối tượng để có thể áp dụng đa dạng ví dụ.

    Đầu tiên, để tạo file servers.json bạn dùng lệnh:

    vi servers.json

    Trong file này, bạn thêm nội dung JSON mẫu bao gồm:

    • Trường datacenter mô tả vị trí trung tâm dữ liệu.
    • Trường total_servers thể hiện tổng số server.
    • Mảng servers chứa nhiều object, mỗi object có các thuộc tính như id, name, ip, os, status, cpu, ram để phục vụ các thao tác lọc theo trạng thái, sắp xếp theo CPU hoặc trích xuất danh sách IP, tên server.
    {
      "datacenter": "HCM",
      "total_servers": 3,
      "servers": [
        {
          "id": 1,
          "name": "web-server-01",
          "ip": "192.168.1.10",
          "os": "Ubuntu 22.04",
          "status": "running",
          "cpu": 4,
          "ram": "8GB"
        },
        {
          "id": 2,
          "name": "db-server-01",
          "ip": "192.168.1.11",
          "os": "AlmaLinux 9",
          "status": "stopped",
          "cpu": 8,
          "ram": "16GB"
        },
        {
          "id": 3,
          "name": "backup-server-01",
          "ip": "192.168.1.12",
          "os": "Ubuntu 20.04",
          "status": "running",
          "cpu": 2,
          "ram": "4GB"
        }
      ]
    }
    Chuẩn bị file JSON mẫu để thực hành
    Chuẩn bị file JSON mẫu để thực hành

    1. Format JSON cho dễ đọc

    Khi làm việc với JSON thô, dữ liệu thường nằm trên một dòng dài hoặc ít thụt lề, rất khó quan sát cấu trúc, đặc biệt khi có nhiều cấp lồng nhau. Sử dụng lệnh jq để format lại giúp hiển thị JSON rõ ràng hơn, dễ kiểm tra key, value và các mảng/đối tượng bên trong. Bạn sử dụng lệnh:

    cat servers.json | jq
    Format JSON cho dễ đọc
    Format JSON cho dễ đọc

    Lệnh trên sẽ đọc nội dung servers.json và áp dụng filter . (identity). Qua đó, nó in lại toàn bộ JSON với khoảng trắng, xuống dòng và thụt lề chuẩn, hỗ trợ việc rà soát cấu trúc và nội dung dữ liệu nhanh ngay trên terminal.

    2. Đọc toàn bộ nội dung hoặc từng phần JSON

    Sau khi đã có file JSON được format, người dùng có thể dùng lệnh jq để đọc toàn bộ đối tượng hoặc chỉ trích xuất một phần dữ liệu tùy theo nhu cầu. Cách này rất hữu ích khi file JSON lớn hoặc chứa nhiều mảng lồng nhau, cần tập trung vào từng khu vực dữ liệu cụ thể.

    Để đọc nguyên đối tượng/mảng, bạn dùng lệnh:

    jq '.' servers.json

    Lệnh này dùng filter . để in ra toàn bộ nội dung JSON trong file, tương tự như cat servers.json | jq nhưng gọi jq trực tiếp với file đầu vào.

    Để đọc từng phần tử trong mảng, bạn dùng lệnh:

    jq '.[]' file.json
    # hoặc
    jq '.servers[]' servers.json

    Với cú pháp trên, lệnh jq sẽ lần lượt duyệt qua từng phần tử của mảng ở cấp gốc hoặc mảng servers, in mỗi object trên một khối riêng, giúp quan sát chi tiết từng bản ghi thay vì xem cả mảng lớn một lúc.

    1. Lấy một giá trị cụ thể ở mức gốc

    Ở bước này, lệnh jq được dùng để truy xuất nhanh các trường đơn nằm ở cấp gốc của tài liệu JSON, giúp lấy đúng giá trị cần mà không phải đọc toàn bộ cấu trúc. Cách làm này đặc biệt hữu ích khi chỉ cần kiểm tra vài thông tin tổng quan như tên datacenter hoặc tổng số server trong file cấu hình.

    Bạn lấy tên datacenter bằng lệnh:

    cat servers.json | jq '.datacenter'
    Lấy tên datacenter
    Lấy tên datacenter

    Lấy tổng số server với lệnh:

    cat servers.json | jq '.total_servers'
    Lấy tổng số server
    Lấy tổng số server

    Hai lệnh trên áp dụng filter trực tiếp tới từng key ở root, jq sẽ trả về giá trị tương ứng dưới dạng JSON hợp lệ, có thể dùng để quan sát hoặc kết hợp tiếp trong pipeline.

    2. Lấy toàn bộ một mảng hoặc đối tượng con

    Khi cần xem hoặc thao tác sâu hơn với danh sách server, bạn có thể truy cập trực tiếp vào mảng hoặc object con thay vì in toàn bộ file. Việc này giúp tập trung vào khu vực dữ liệu liên quan, đồng thời chuẩn bị cho các bước lọc, sắp xếp và thống kê ở các phần sau.

    Lấy toàn bộ danh sách server, bạn dùng lệnh:

    cat servers.json | jq '.servers'
    Lấy toàn bộ danh sách server
    Lấy toàn bộ danh sách server

    Filter .servers sẽ trả về toàn bộ mảng chứa các object server, giữ nguyên cấu trúc nhưng tách riêng phần cần làm việc để dễ quan sát hoặc truyền tiếp cho các filter khác.

    3. Duyệt từng phần tử trong mảng

    Sau khi có mảng servers, bước tiếp theo là duyệt từng phần tử để xem chi tiết thông tin của từng server, mỗi lần in ra một object riêng. Cách hiển thị này giúp đọc dữ liệu rõ ràng hơn. Đồng thời, nó tạo nền tảng cho các thao tác trích xuất trường, lọc theo điều kiện hoặc đếm số lượng bản ghi.

    Để lấy từng phần tử, bạn dùng lệnh:

    cat servers.json | jq '.servers[]'
    Duyệt từng phần tử trong mảng
    Duyệt từng phần tử trong mảng

    Cú pháp .servers[] yêu cầu jq lặp qua từng phần tử trong mảng servers và in ra lần lượt, mỗi server sẽ xuất hiện dưới dạng một object độc lập, rất thuận tiện khi kiểm tra hoặc kết hợp với các filter như select, lấy field cụ thể, hay chuyển đổi định dạng.

    1. Lấy một trường cụ thể trong mảng

    Ở giai đoạn này, lệnh jq được dùng để trích xuất riêng từng cột dữ liệu từ mảng servers. Ví dụ như tên hoặc địa chỉ IP, giúp danh sách xuất ra gọn hơn và dễ sử dụng cho các thao tác tiếp theo. Cách tiếp cận này đặc biệt hữu ích khi cần xuất danh sách tên server, IP hoặc một trường cụ thể để kiểm tra, thống kê hoặc đưa vào script.

    Bạn lấy danh sách tên server bằng lệnh:

    cat servers.json | jq '.servers[].name'
    Lấy danh sách tên server
    Lấy danh sách tên server

    Lấy danh sách địa chỉ IP bằng lệnh:

    cat servers.json | jq '.servers[].ip'
    Lấy danh sách địa chỉ IP
    Lấy danh sách địa chỉ IP

    Cú pháp .servers[].name.servers[].ip yêu cầu jq duyệt qua từng phần tử trong mảng servers và in ra giá trị trường tương ứng, giúp thu được danh sách các giá trị theo từng dòng.

    2. Lọc server theo điều kiện

    Sau khi có khả năng trích xuất trường, bước tiếp theo là lọc các object trong mảng dựa trên điều kiện cụ thể, chẳng hạn trạng thái hoạt động hoặc cấu hình CPU. Việc sử dụng hàm select() trong jq cho phép biểu thức điều kiện linh hoạt, chỉ giữ lại những server đáp ứng tiêu chí mong muốn.

    Lọc server đang chạy (status == “running”) bạn dùng lệnh sau:

    cat servers.json | jq '.servers[] | select(.status=="running")'
    Đếm số server đang chạy
    Lọc server đang chạy

    Lọc server có CPU ≥ 4 dùng lệnh:

    cat servers.json | jq '.servers[] | select(.cpu >= 4)'
    Lọc server có CPU ≥ 4
    Lọc server có CPU ≥ 4

    Trong hai lệnh trên, jq lần lượt duyệt từng phần tử của mảng servers rồi áp dụng select() để kiểm tra điều kiện, chỉ những object thỏa điều kiện mới được in ra, giúp tập trung vào nhóm server cần quan tâm.

    3. Chỉ lấy một số trường cần thiết

    Trong nhiều trường hợp, phần output không cần chứa toàn bộ key của object mà chỉ giữ lại vài trường quan trọng để dễ đọc và dễ đưa vào báo cáo hoặc file log. jq hỗ trợ tạo object mới từ các trường đã chọn, nhờ đó giảm nhiễu thông tin và giúp kết quả trở nên súc tích hơn.

    Để lấy tên và IP dưới dạng object, bạn dùng lệnh sau:

    cat servers.json | jq '.servers[] | {name: .name, ip: .ip}'
    Lấy tên và IP dưới dạng object
    Lấy tên và IP dưới dạng object

    Biểu thức trên tạo ra một object mới cho mỗi server, chỉ bao gồm hai trường nameip, rất phù hợp khi cần xuất danh sách server gọn nhẹ để kiểm tra kết nối, lập danh sách giám sát hoặc sử dụng tiếp trong các công cụ khác.

    1. Sắp xếp dữ liệu theo trường bất kỳ

    Khi danh sách server ngày càng nhiều, việc sắp xếp theo một trường nhất định giúp quan sát và phân tích dữ liệu thuận tiện hơn, đặc biệt với các chỉ số tài nguyên như CPU, RAM hoặc trạng thái. Hàm sort_by() trong jq cho phép sắp xếp mảng các object theo giá trị của một key cụ thể, sau đó có thể kết hợp với reverse để đảo ngược thứ tự, phục vụ các tình huống cần xem từ thấp lên cao hoặc từ cao xuống thấp.

    Sắp xếp tăng dần theo CPU:

    cat servers.json | jq '.servers | sort_by(.cpu)'
    Sắp xếp tăng dần theo CPU
    Sắp xếp tăng dần theo CPU

    Sắp xếp giảm dần, bạn dùng lệnh:

    cat servers.json | jq '.servers | sort_by(.cpu) | reverse'
    Sắp xếp giảm dần
    Sắp xếp giảm dần

    Trong hai lệnh trên, jq nhận mảng servers, áp dụng sort_by(.cpu) để tạo mảng mới đã được sắp xếp theo giá trị trường cpu, sau đó reverse đảo chiều mảng nhằm hiển thị các server có cấu hình CPU cao ở đầu danh sách.

    2. Đếm số phần tử thỏa điều kiện

    Ngoài sắp xếp, jq còn hỗ trợ thống kê nhanh số lượng phần tử trong mảng thỏa mãn một điều kiện nhất định, rất hữu ích cho các báo cáo tổng quan như số server đang chạy, số server dừng hoặc số instance vượt ngưỡng tài nguyên. Cách làm phổ biến là lọc các object phù hợp điều kiện, gom chúng vào một mảng mới rồi dùng length để lấy số phần tử.

    Đếm số server đang chạy, bạn dùng lệnh sau:

    cat servers.json | jq '[.servers[] | select(.status=="running")] | length'
    Lọc server đang chạy
    Đếm số server đang chạy

    Biểu thức trên duyệt qua từng phần tử trong servers, giữ lại những object có status=="running", đưa chúng vào một mảng tạm thời bằng cặp […], sau đó length trả về tổng số server đang hoạt động, có thể dùng trực tiếp cho mục đích giám sát hoặc tích hợp vào script kiểm tra hệ thống.

    1. Dùng lệnh jq với curl khi gọi API

    Trong môi trường thực tế, dữ liệu JSON thường được trả về từ các REST API, vì vậy việc kết hợp curl và jq giúp vừa lấy dữ liệu từ endpoint, vừa xử lý kết quả trực tiếp trên dòng lệnh mà không cần lưu ra file tạm. Cách làm phổ biến là dùng curl để gọi API với chế độ im lặng (-s), sau đó pipe (|) sang jq để format, lọc hoặc trích xuất những trường cần thiết.

    Để lấy toàn bộ JSON từ endpoint, bạn dùng lệnh:

    curl -s https://api.example.com/servers | jq

    Lấy danh sách IP từ kết quả API dùng lệnh:

    curl -s https://api.example.com/servers | jq '.servers[].ip'

    Với hai lệnh trên, curl chịu trách nhiệm gửi yêu cầu HTTP và nhận phản hồi JSON, còn jq đọc luồng dữ liệu từ stdin, sau đó hoặc in đẹp toàn bộ nội dung hoặc chỉ lấy trường .servers[].ip, giúp xem nhanh log, trạng thái dịch vụ, thông tin hệ thống hoặc kết quả từ các REST API ngay trong terminal.

    2. Xuất kết quả jq ra file

    Bên cạnh việc xem trực tiếp trên màn hình, rất nhiều trường hợp cần lưu lại kết quả đã lọc để dùng cho các bước xử lý tiếp theo, như import vào công cụ khác, gửi báo cáo hoặc sử dụng trong script. Việc kết hợp jq với chuyển hướng output (>) cho phép ghi kết quả vào file văn bản mà không cần thao tác thủ công.

    Ví dụ: Lưu danh sách tên server ra file:

    cat servers.json | jq '.servers[].name' > server-name.txt
    Lưu danh sách tên server ra file
    Lưu danh sách tên server ra file

    Câu lệnh này đọc file servers.json, trích xuất trường name của từng server rồi ghi toàn bộ danh sách tên vào file server-name.txt, tạo ra một nguồn dữ liệu gọn nhẹ có thể dùng lại trong các script kiểm tra, lệnh ping hàng loạt hoặc các tác vụ quản trị khác.

    Dùng jq trong Bash Script để tự động hóa

    Khi kết hợp với Bash, jq giúp trích xuất dữ liệu từ JSON rồi đưa trực tiếp vào vòng lặp shell, từ đó tự động hóa các tác vụ lặp đi lặp lại như kiểm tra kết nối, giám sát dịch vụ hoặc thao tác hàng loạt trên nhiều server. Cách làm phổ biến là dùng jq để lấy danh sách giá trị ở dạng chuỗi thô, sau đó duyệt qua từng phần tử bằng vòng lặp for hoặc while trong script.

    Ví dụ để ping tới từng IP trong JSON, bạn có thể sử dụng lệnh:

    for ip in $(cat servers.json | jq -r '.servers[].ip'); do
      echo "Ping tới server $ip"
    done

    Trong ví dụ này, jq với tùy chọn -r sẽ in ra danh sách IP ở dạng raw string (không kèm dấu ngoặc kép), mỗi IP trên một dòng, giúp vòng lặp trong Bash đọc từng giá trị một cách thuận tiện và hạn chế lỗi do ký tự trích dẫn.

    Câu hỏi thường gặp

    Jq Linux có dùng được ngoài Linux không?

    Jq không chỉ dùng trên Linux mà còn hỗ trợ đa nền tảng, có bản cho macOS, Windows (qua binary hoặc WSL) và các hệ thống Unix-like khác, miễn là có môi trường dòng lệnh phù hợp.

    Khi nào nên dùng jq thay vì tự viết script Python để xử lý JSON?

    Jq phù hợp khi cần thao tác nhanh trên terminal, xử lý các tác vụ lọc, trích xuất, sắp xếp, thống kê JSON trực tiếp trong pipeline mà không muốn tạo file script hoặc thiết lập môi trường lập trình riêng như Python.

    Làm sao để kiểm tra nhanh JSON có hợp lệ trước khi dùng lệnh jq trong script?

    Bạn có thể dùng lệnh jq . file.json hoặc cat file.json | jq.Nếu JSON hợp lệ jq sẽ in ra nội dung đã format, còn nếu sai cú pháp jq sẽ báo lỗi, giúp bạn phát hiện vấn đề trước khi đưa vào các bước xử lý tự động.

    Tóm lại, lệnh jq Linux mang đến một bộ công cụ xử lý JSON mạnh mẽ ngay trên dòng lệnh, giúp bạn dễ dàng format dữ liệu, truy vấn trường cụ thể, lọc theo nhiều điều kiện, sắp xếp và thống kê mà không cần rời khỏi terminal. Khi đã nắm vững các thao tác cài đặt, chuẩn bị file JSON, sử dụng các filter cơ bản và tích hợp vào Bash script, bạn có thể xây dựng những quy trình tự động hóa rõ ràng, giảm thao tác thủ công và tăng đáng kể hiệu quả vận hành trên hệ thống Linux.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Dùng lệnh chmod trên Linux để quản lý quyền truy cập file và thư mục hiệu quả
    Dùng lệnh chmod trên Linux để quản lý quyền truy cập file và thư mục hiệu quả

    Lệnh chmod trong Linux là công cụ dùng để thiết lập và thay đổi quyền truy cập đối với file và thư mục trong hệ thống. Việc cấu hình quyền đúng cách giúp kiểm soát truy cập, tăng cường bảo mật và hạn chế các lỗi phát sinh khi vận hành ứng dụng. Trong bài…

    10/02/2026

    Sử dụng lệnh passwd trên Linux quản lý mật khẩu người dùng an toàn và hiệu quả
    Sử dụng lệnh passwd trên Linux quản lý mật khẩu người dùng an toàn và hiệu quả

    Lệnh passwd trong Linux là công cụ dòng lệnh dùng để thiết lập, thay đổi và quản lý mật khẩu của tài khoản người dùng trên hệ thống. Việc sử dụng passwd đúng cách giúp tăng cường bảo mật, kiểm soát quyền truy cập và hạn chế rủi ro liên quan đến tài khoản người…

    10/02/2026

    Lệnh zcat trong Linux là gì? Cách sử dụng lệnh zcat kèm ví dụ dễ hiểu
    Lệnh zcat trong Linux là gì? Cách sử dụng lệnh zcat kèm ví dụ dễ hiểu

    Lệnh zcat trong Linux là công cụ dòng lệnh dùng để xem và xử lý nội dung của các file nén định dạng .gz mà không cần giải nén. Với zcat, bạn có thể nhanh chóng đọc dữ liệu, kết hợp cùng các lệnh như grep, less, head để phân tích file nén một cách…

    10/02/2026

    Hướng dẫn sử dụng lệnh groupdel trên Linux để xoá nhóm người dùng
    Hướng dẫn sử dụng lệnh groupdel trên Linux để xoá nhóm người dùng

    Lệnh groupdel trong Linux là công cụ dòng lệnh dùng để xóa nhóm người dùng khỏi hệ thống. Việc sử dụng groupdel đúng cách giúp hệ thống gọn gàng hơn, hạn chế rủi ro phân quyền sai và tăng tính bảo mật trong quá trình quản trị. Trong bài viết này, mình sẽ cùng bạn…

    09/02/2026

    linux

    lenh

    text