美文网首页shellShell那些事儿Vim&Shell
Linux Shell环境下用jq命令处理json文件

Linux Shell环境下用jq命令处理json文件

作者: 泰克尼客 | 来源:发表于2016-12-24 16:02 被阅读770次

有时候需要在Shell环境下处理json文件,这时使用jq命令非常方便。

  • 安装
    CentOS下可以直接通过yum安装:
yum install jq -y
  • 使用方法
    假设有一个名为test.json的文件,内容如下:
{
    "Summary": {
        "Version": "1.0",
        "Comment": [
            "List1",
            "List2"
        ]
    }
}

使用jq命令可以用描述性的语言来获取json文件中的元素:

[root@localhost ~]# jq .Summary test.json 
{
  "Version": "1.0",
  "Comment": [
    "List1",
    "List2"
  ]
}
[root@localhost ~]# jq .Summary.Version test.json 
"1.0"
[root@localhost ~]# jq .Summary.Comment[1] test.json 
"List2"

jq命令还提供一些内建函数,比如利用keys获取json文件中的所有key,has判断是否存在某个key:

[root@localhost ~]# jq 'keys' test.json
[
  "Summary"
]
[root@localhost ~]# jq 'has("Summary")' test.json
true
[root@localhost ~]# jq 'has("nonexist")' test.json
false
  • 在脚本中使用jq命令
    脚本中往往有这样的需求:取出json文件中的某一个元素,存储到变量中做下一步处理。但是注意到,通过jq命令取出的字符型元素是带引号的,例如:
[root@localhost ~]# jq .Summary.Version test.json 
"1.0"

但是我们往往不需要这个引号,这时可以使用Shell提供的字符串替换功能。编写脚本example.sh进行示例:

#!/bin/bash
Var1=$(jq .Summary.Version test.json)
echo "Var1: $Var1"
Var2=${Var1//\"/}
echo "Var2: $Var2"

执行该脚本可以看到,Var2被去除了引号

[root@localhost ~]# ./example.sh 
Var1: "1.0"
Var2: 1.0

其实这是用了字符串的替换语法:

# //代表全部替换
${Str//"被替换的内容"/"替换的内容"}

在上述脚本中,我们想删除掉",那么可以理解成将"替换成空,因此就可以用脚本中所示的语法来处理了:

Var2=${Var1//\"/}

相关文章

  • Linux Shell环境下用jq命令处理json文件

    有时候需要在Shell环境下处理json文件,这时使用jq命令非常方便。 安装CentOS下可以直接通过yum安装...

  • 读取HDFS中的 Json文件 并排序去重求个数

    命令 : 备注: hdfs dfs -cat 是HDFS文件系统里的cat命令 jq 是linux下的 Json解...

  • jq 命令介绍

    jq 命令介绍 简介 jq 是一款命令行下处理 JSON 数据的工具。其可以接受标准输入,命令管道或者文件中的 J...

  • 优雅的查看json文件

    前面 jq是一个轻量级但是贼灵活的命令行json处理器.jq在json数据处理中很有用就像用awk处理文本一样。j...

  • Linux下的shell

    Shell 和 Linux shell程序是包含若干行shell或linux命令的文件。linux命令语句只能一行...

  • Linux命令jq

    是什么 jq 是一个轻量级的json处理命令。可以对json数据进行分片、过滤、映射和转换 jq . 对json数...

  • Linux 下常用shell命令

    Linux Shell常用shell命令 一、文件、目录操作命令 1、ls命令 功能:显示文件和目录的信息 ls以...

  • LINUX下常用shell指令

    Linux Shell常用shell命令 一、文件、目录操作命令 1、ls命令 功能:显示文件和目录的信息 ls以...

  • Android-adb-常用命令

    一.介绍 二.adb命令 三.adb shell命令(输入adb shell进入Linux命令环境,以下命令省略a...

  • 2019-04-13

    目录[toc] 一 前言 1.总结linux环境下常用的命令2.linux下的命令是在shell中执行,通过she...

网友评论

  • 毛羊:去掉引号不用那么麻烦,加个-r参数就可以了

本文标题:Linux Shell环境下用jq命令处理json文件

本文链接:https://www.haomeiwen.com/subject/ylmlvttx.html