标签: json

如何使用 jq 独立打印 json?

目前,当我想使用jq漂亮地打印一个 json 文件时,我使用:

cat file.json | jq .
Run Code Online (Sandbox Code Playgroud)

但是我希望jq接受一个文件名作为参数而不必回退到cat.

手册页说:

jq [选项...] 过滤器 [文件...]

... 默认情况下,jq 从 stdin 读取 JSON 对象流(空格分隔)。可以指定一个或多个文件,在这种情况下 jq 将从这些文件中读取输入。

仍在运行:

jq file.json
Run Code Online (Sandbox Code Playgroud)

通过抛出未定义键的编译错误而失败。

运行时我应该如何添加文件jq

json text-formatting jq

80
推荐指数
1
解决办法
6万
查看次数

如何在 Linux 中使用 shell 脚本解析 JSON?

我有一个 JSON 输出,我需要在 Linux 中从中提取一些参数。

这是 JSON 输出:

{
        "OwnerId": "121456789127",
        "ReservationId": "r-48465168",
        "Groups": [],
        "Instances": [
            {
                "Monitoring": {
                    "State": "disabled"
                },
                "PublicDnsName": null,
                "RootDeviceType": "ebs",
                "State": {
                    "Code": 16,
                    "Name": "running"
                },
                "EbsOptimized": false,
                "LaunchTime": "2014-03-19T09:16:56.000Z",
                "PrivateIpAddress": "10.250.171.248",
                "ProductCodes": [
                    {
                        "ProductCodeId": "aacglxeowvn5hy8sznltowyqe",
                        "ProductCodeType": "marketplace"
                    }
                ],
                "VpcId": "vpc-86bab0e4",
                "StateTransitionReason": null,
                "InstanceId": "i-1234576",
                "ImageId": "ami-b7f6c5de",
                "PrivateDnsName": "ip-10-120-134-248.ec2.internal",
                "KeyName": "Test_Virginia",
                "SecurityGroups": [
                    {
                        "GroupName": "Test",
                        "GroupId": "sg-12345b"
                    }
                ],
                "ClientToken": "VYeFw1395220615808",
                "SubnetId": "subnet-12345314",
                "InstanceType": "t1.micro",
                "NetworkInterfaces": [
                    {
                        "Status": …
Run Code Online (Sandbox Code Playgroud)

sed awk text-processing json

78
推荐指数
4
解决办法
40万
查看次数

使用 jq 在 CSV 中提取值和格式

我有以下 JSON 文件:

{
"data": [
    {
        "displayName": "First Name",
        "rank": 1,
        "value": "VALUE"
    },
    {
        "displayName": "Last Name",
        "rank": 2,
        "value": "VALUE"
    },
    {
        "displayName": "Position",
        "rank": 3,
        "value": "VALUE"
    },
    {
        "displayName": "Company Name",
        "rank": 4,
        "value": "VALUE"
    },
    {
        "displayName": "Country",
        "rank": 5,
        "value": "VALUE"
    },
]
}
Run Code Online (Sandbox Code Playgroud)

我想要一个这种格式的 CSV 文件:

First Name, Last Name, Position, Company Name, Country
VALUE, VALUE, VALUE, VALUE, VALUE, VALUE
Run Code Online (Sandbox Code Playgroud)

这可以通过仅使用jq吗?我没有任何编程技能。

bash python csv json jq

74
推荐指数
4
解决办法
14万
查看次数

将 grep 上下文限制为在线 N 个字符

我必须对一些行长度超过几千个字符的 JSON 文件进行 grep。如何限制 grep 在匹配的左侧和右侧显示最多 N 个字符的上下文?除了 grep 之外的任何工具都可以,只要它在常见的 Linux 包中可用。

这将是示例输出,对于虚构的 grep 开关?

$ grep -r foo *
hello.txt: Once upon a time a big foo came out of the woods.

$ grep -? 10 -r foo *
hello.txt: ime a big foo came of t
Run Code Online (Sandbox Code Playgroud)

grep search json

51
推荐指数
4
解决办法
6万
查看次数

如何使用命令行计算文本文件中某个单词的出现次数?

我有一个位于一行的大型 JSON 文件,我想使用命令行来计算文件中某个单词出现的次数。我怎样才能做到这一点?

command-line grep bash json

49
推荐指数
4
解决办法
22万
查看次数

如何将嵌入(引用)的 json 字符串转换为 json

我熟悉解析json的“jq”。

我使用一种产生 json 响应的服务,其中一个属性本身就是一个 json 字符串。如何将该引用的值转换为有效的 json 字符串,以便我可以使用 jq 处理它?

例如,如果我只是从“jq.”查看简单的漂亮打印的 json,下面是输出的简短摘录:

"someJsonString": "{\"date\":\"2018-01-08\", ...
Run Code Online (Sandbox Code Playgroud)

我可以使用 jq 来获取该属性的值,但我需要通过“转义”将引用的字符串转换为有效的 json。

我想我可以将它导入 sed,删除开始和结束双引号,并删除所有反斜杠 (" sed -e 's/^"//' -e 's/"$//' -e 's/\\//g'")。这似乎有效,但这似乎不是最强大的解决方案。

更新

为了更清楚地了解我在做什么,这里有几个省略的示例,显示了我的尝试:

% curl -s -q -L 'http://.../1524.json' | jq '.results[0].someJsonString' | jq .
"{\"date\":\"2018-01-08\",...
% echo $(curl -s -q -L 'http:/.../1524.json' | jq '.results[0].someJsonString') | jq .
"{\"date\":\"2018-01-08\",...
Run Code Online (Sandbox Code Playgroud)

更新

这是一个完全独立的示例:

% cat stuff.json | jq .
{
  "stuff": "{\"date\":\"2018-01-08\"}"
}
% cat stuff.json | jq '.stuff'
"{\"date\":\"2018-01-08\"}" …
Run Code Online (Sandbox Code Playgroud)

json jq

44
推荐指数
2
解决办法
4万
查看次数

jq - 选择以字符串开头的属性

输入json:

[
  {
    "id": "89",
    "hostname": "abcd"
  },
  {
    "id": "89",
    "hostname": "babcd"
  }
]
Run Code Online (Sandbox Code Playgroud)

如何修改下面的过滤器以仅输出以“abcd”开头的主机名?

$ jq -r '.[]|select(.hostname | contains("abcd"))' jjjj
{
  "id": "89",
  "hostname": "abcd"
}
{
  "id": "89",
  "hostname": "babcd"
}
$ jq -r '.[]|select(.hostname | contains("^abcd"))' jjjj
$
Run Code Online (Sandbox Code Playgroud)

json jq

38
推荐指数
1
解决办法
3万
查看次数

将 jq 输出合并为逗号分隔的字符串

我正在尝试curl一些返回 json 文件的 URL,然后我想从中解析主机并创建一个逗号分隔的字符串。

我有第一部分工作

curl -s -u "admin:admin" -H "X-Requested-By: ambari" "https://hbasecluster.net/api/v1/clusters/mycluster/services/ZOOKEEPER/components/ZOOKEEPER_SERVER" | jq -r '.host_components[].HostRoles.host_name'
Run Code Online (Sandbox Code Playgroud)

返回

zk0-mycluster.net
zk1-mycluster.net
zk2-mycluster.net
Run Code Online (Sandbox Code Playgroud)

现在我想将这些加入一个字符串中

zk0-mycluster.net,zk1-mycluster.net,zk2-mycluster.net
Run Code Online (Sandbox Code Playgroud)

command-line curl json jq

36
推荐指数
3
解决办法
6万
查看次数

如何使用命令行解压 jsonlz4 文件(Firefox 书签备份)?

似乎有各种 JavaScript + 浏览器特定的解压缩方法,但是没有某种方法可以将 jsonlz4 文件转换为unlz4可以读取的内容吗?

compression firefox json lz4

30
推荐指数
5
解决办法
2万
查看次数

将 jq 输出设置为 Bash 变量

我正在使用 curl 从这样的休息 api 中获取 JSON:

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc)
echo "${content}"| jq -r '.data.value'
Run Code Online (Sandbox Code Playgroud)

这产生了我需要的价值。然而; 当我将上面的代码更改为如下所示时:

content=$(curl -s  -X GET -H "Header:Value" http://127.0.0.1:8200/etc)
username=$(echo "${content}"| jq -r '.data.value')
echo $username
Run Code Online (Sandbox Code Playgroud)

不产生任何东西。如何更改此设置以便为用户名变量分配输出?

bash curl json jq

30
推荐指数
3
解决办法
7万
查看次数

标签 统计

json ×10

jq ×6

bash ×3

command-line ×2

curl ×2

grep ×2

awk ×1

compression ×1

csv ×1

firefox ×1

lz4 ×1

python ×1

search ×1

sed ×1

text-formatting ×1

text-processing ×1