【发布时间】:2021-10-24 06:41:03
【问题描述】:
我是 Bash 新手,我目前正在尝试获取 JSON 的内容而不显示键值的名称。
这是 JSON 的样子(部分):
[
{
"V1": 65,
"V2": "Female",
"V3": 0.7,
"V4": 0.1,
"V5": 187,
"V6": 16,
"V7": 18,
"V8": 6.8,
"V9": 3.3,
"V10": 0.9,
"Class": 1
},
{
"V1": 62,
"V2": "Male",
"V3": 10.9,
"V4": 5.5,
"V5": 699,
"V6": 64,
"V7": 100,
"V8": 7.5,
"V9": 3.2,
"V10": 0.74,
"Class": 1
},
{
"V1": 62,
"V2": "Male",
"V3": 7.3,
"V4": 4.1,
"V5": 490,
"V6": 60,
"V7": 68,
"V8": 7,
"V9": 3.3,
"V10": 0.89,
"Class": 1
}
]
这是我的脚本
#!/bin/bash
echo "Albumin =3";
echo "Age Sex Albumin Proteins";
echo "******";
echo " "
echo "Women";
echo "--------------";
cat csvjson.json | jq -c '.[] | {V1, V2, V8, V9} | select(.V9 ==3) | select(.V2 =="Female")';
echo " "
echo "Men";
echo "-------------";
cat csvjson.json | jq -c '.[] | {V1, V2, V8, V9} | select(.V9 ==3) | select(.V2 =="Male")';
这就是脚本显示的内容
Women
--------------
{"V1":38,"V2":"Female","V8":5.6,"V9":3}
{"V1":38,"V2":"Female","V8":5.6,"V9":3}
{"V1":32,"V2":"Female","V8":6,"V9":3}
{"V1":31,"V2":"Female","V8":6,"V9":3}
{"V1":19,"V2":"Female","V8":5.5,"V9":3}
{"V1":38,"V2":"Female","V8":7,"V9":3}
{"V1":20,"V2":"Female","V8":6.1,"V9":3}
{"V1":32,"V2":"Female","V8":7,"V9":3}
{"V1":42,"V2":"Female","V8":6.7,"V9":3}
Men
-------------
{"V1":72,"V2":"Male","V8":7.4,"V9":3}
{"V1":60,"V2":"Male","V8":6.3,"V9":3}
{"V1":33,"V2":"Male","V8":5.4,"V9":3}
{"V1":60,"V2":"Male","V8":6.8,"V9":3}
{"V1":60,"V2":"Male","V8":7.4,"V9":3}
{"V1":60,"V2":"Male","V8":7,"V9":3}
{"V1":72,"V2":"Male","V8":6.2,"V9":3}
这就是我想要展示的
Women
--------------
38,Female,3, 5.6
38,Female,3, 5.6
32,Female,3, 6
31,Female,3, 6
19,Female,3, 5.5
38,Female,3, 7
20,Female,3, 6.1
32,Female,3, 7
42,Female,3, 6.7
Men
--------------
72,Male,3, 7.4
60,Male,3, 6.3
33,Male,3, 5.4
60,Male,3, 6.8
60,Male,3, 7.4
60,Male,3, 7
72,Male,3, 6.2
那么,我怎样才能隐藏键值,只在我做的过滤器后显示 JSON 的内容呢?
【问题讨论】:
-
@Cyrus
csvjson.json是 json 文件的名称,它可以正常工作。我不认为这是问题,对不起。我只是展示它的外观,但只是我提到的一部分。我误会你了吗? -
您要打印所有行还是只打印与
.V9 == 3匹配的行? -
@pmf 所有符合条件的行:.V9 == 3, .V2 ="Female" 并显示 .V1, .V2, .V3 ,.V9,如“我的脚本”中所示显示...'
-
只是问,因为您所有的示例数据在
.V9字段中都有3.3(不是3),所以不会显示,对吧?还是要打印3而不是实际的.V9值? -
@pmf 我不这么认为。所有
.V9值都等于 3。 -->{"V1":38,"V2":"Female","V8":5.6,"V9":3} {"V1":38,"V2":"Female","V8":5.6,"V9":3} {"V1":32,"V2":"Female","V8":6,"V9":3} {"V1":31,"V2":"Female","V8":6,"V9":3}