jd 命令入门
Dyck Deng Lv2

jq 命令

轻松操作在命令行shell中操作json数据,可以对数据映射、过滤、转换

  1. 格式化JSON

    1
    cat data.json | jq
  2. [index] 取数组的第一个

    1
    cat data.json | jq '.resources[0]'
  3. 管道符号 | 可以通过管道符号层层过滤

1
cat data.json | jq '.resources[0]' | jq '.id'
  1. 返回数组所有数据 []
1
cat data.json | jq ".resources" | jq ".[] | { id: .id}"
  1. 自定义key,并以数组形式显示,命令用[]扩起来即可
    1
    cat data.json | jq ".resources" | jq "[.[] | { _id: .id}]"

例如

  1. 格式化JSON

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    ➜ cat data.json
    {"resources":[{"id":3,"device_id":1,"config_file_name":"/usr/local/appdata/data/zddi/f5-backup/2021-10-18_09-30-29.f5.config","sync_start_time":1634520568,"sync_end_time":1634520629,"ctime":1634520629,"error_file_state":10,"state":20},{"id":2,"device_id":1,"config_file_name":"/usr/local/appdata/data/zddi/f5-backup/2021-10-15_16-18-07.f5.config","sync_start_time":1634285832,"sync_end_time":1634285887,"ctime":1634285887,"error_file_state":10,"state":10},{"id":1,"device_id":1,"config_file_name":"/usr/local/appdata/data/zddi/f5-backup/2021-10-15_14-04-45.f5.config","sync_start_time":1634277830,"sync_end_time":1634277885,"ctime":1634277885,"error_file_state":10,"state":10}],"page_num":"1","page_size":"30","total_size":3,"min_time":1633046400000,"max_time":1634601599000}

    learning-notes/jq on  every [?]
    ➜ cat data.json | jq
    {
    "resources": [
    {
    "id": 3,
    "device_id": 1,
    "config_file_name": "/usr/local/appdata/data/zddi/f5-backup/2021-10-18_09-30-29.f5.config",
    "sync_start_time": 1634520568,
    "sync_end_time": 1634520629,
    "ctime": 1634520629,
    "error_file_state": 10,
    "state": 20
    },
    {
    "id": 2,
    "device_id": 1,
    "config_file_name": "/usr/local/appdata/data/zddi/f5-backup/2021-10-15_16-18-07.f5.config",
    "sync_start_time": 1634285832,
    "sync_end_time": 1634285887,
    "ctime": 1634285887,
    "error_file_state": 10,
    "state": 10
    },
    {
    "id": 1,
    "device_id": 1,
    "config_file_name": "/usr/local/appdata/data/zddi/f5-backup/2021-10-15_14-04-45.f5.config",
    "sync_start_time": 1634277830,
    "sync_end_time": 1634277885,
    "ctime": 1634277885,
    "error_file_state": 10,
    "state": 10
    }
    ],
    "page_num": "1",
    "page_size": "30",
    "total_size": 3,
    "min_time": 1633046400000,
    "max_time": 1634601599000
    }

  2. [index] 取数组的第一个

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ➜ cat data.json | jq '.resources[0]'
    {
    "id": 3,
    "device_id": 1,
    "config_file_name": "/usr/local/appdata/data/zddi/f5-backup/2021-10-18_09-30-29.f5.config",
    "sync_start_time": 1634520568,
    "sync_end_time": 1634520629,
    "ctime": 1634520629,
    "error_file_state": 10,
    "state": 20
    }
  3. 返回数组所有数据 []

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    learning-notes/jq on  every [?]
    ➜ cat data.json | jq ".resources" | jq ".[] | { id: .id}"
    {
    "id": 3
    }
    {
    "id": 2
    }
    {
    "id": 1
    }

  4. 自定义key,并以数组形式显示,命令用[]扩起来即可

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    learning-notes/jq on  every [?]
    ➜ cat data.json | jq ".resources" | jq "[.[] | { _id: .id}]"
    [
    {
    "_id": 3
    },
    {
    "_id": 2
    },
    {
    "_id": 1
    }
    ]

    手册
    http://alingse.github.io/jq-manual-cn/manual/v1.5/#Basicfilters

  • 本文标题:jd 命令入门
  • 本文作者:Dyck Deng
  • 创建时间:2021-12-19 00:26:33
  • 本文链接:https://blog.dengyongchao.com/2021/12/18/jd/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论