php格式化字符串-linux命令下jq的使用(curl低格式输出json字符串)

2023-08-29 0 6,866 百度已收录

文章目录

1.jq命令是什么

官网下载:

jq可以对json数据进行切片、过滤、映射和转换。 与 sed、awk、grep 和其他命令一样,它可以让您轻松地处理文本。 它可以轻松地将您拥有的数据转换为您期望的格式,并且您需要编写的程序通常比您期望的更简洁。

jq 是用 C 编写的,没有运行时依赖性,因此它几乎可以在任何系统上运行。 预编译的二进制补码文件可以直接在Linux、OSX和Windows系统上运行。 事实上php格式化字符,你需要授予它在linux和OSX系统中的可执行权限; 也可以在linux系统中直接用yum安装。

jq常用于从json中解析过滤出想要的属性值,格式化json字符输出

1.jq安装

centosyum 安装

yum install  jq

Ubuntu可以直接用apt安装

sudo apt-get install jq

2、jq命令的格式

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

选项:

–version:输出jq版本信息并退出

–slurp/-s:将整个输入流读入链表。

--raw-input/-R:不解析为JSON,将每一行的文本作为字符串输出到屏幕。

--null-input/-n:不读取任何输入,过滤器以 null 作为输入运行。 通常用于从头开始创建 JSON 数据。

--compact-output/-c:使输出紧凑php格式化字符串,而不是在一行上输出每个 JSON 对象。

--color-output/-C: 打开彩色显示

--monochrome-output/-M: 关闭彩色显示

–ascii-output/-a:指定输出格式为ASCII

–raw-output/-r:如果过滤结果是字符串,则直接进入标准输出(去掉字符串中的破折号)

筛选:

.: 默认输出

.foo:输出指定的属性,foo代表属性。

.[foo]:输出指定的链表元素。 foo 代表字段下标。

.[]:输出指定字段中的所有元素

,:指定多个属性作为过滤条件时,用冒号分隔

|:使用指定链表元素中的属性作为过滤条件

文件:

JOSN 格式文件。

从 json 文件的对象字段中提取一组特定属性的值

例子:

从 json 文件对象字段获取一组特定属性的值。

[root@VM_0_14_centos ~]# jq -r '.[].rustc_target_feature' < "./rustc-target-features-optimized.json"
+adx
+sha
+sse2
+avx2
+avx
+sse4.2
+sse4.1
[root@VM_0_14_centos ~]# 

rustc-target-features-optimized.json 文件内容:

[
  {
    "rustc_target_feature": "+adx",
    "check_cpu_for_feature": "adx"
  },
  {
    "rustc_target_feature": "+sha",
    "check_cpu_for_feature": null
  },
  {
    "rustc_target_feature": "+sse2",
    "check_cpu_for_feature": "sse2"
  },
  {
    "rustc_target_feature": "+avx2",
    "check_cpu_for_feature": "avx2"
  },
  {
    "rustc_target_feature": "+avx",
    "check_cpu_for_feature": "avx"
  },
  {
    "rustc_target_feature": "+sse4.2",
    "check_cpu_for_feature": "sse4_2"
  },
  {
    "rustc_target_feature": "+sse4.1",
    "check_cpu_for_feature": "sse4_1"
  }
]

在shell脚本中,我们可以将执行结果复制到变量中。 例如:

optimized_release_rustc_target_features=$(jq -r '.[].rustc_target_feature' < "./rustc-target-features-optimized.json")

它的结果如下,就是你的jq执行结果字符串,用单冒号括起来。

optimized_release_rustc_target_features='+adx
+sha
+sse2
+avx2
+avx
sse4.2
+sse4.1'

从json文件的object字段中提取特定属性集的值,并排除空值

示例:从json文件的object字段中取出一组特定的属性值,并排除为null的值

如下,json还是刚才的json文件。 我们这次取了check_cpu_for_feature属性的值,并通过|select(.!=null)'排除了一个空值。

cpu_features_required_for_optimized_release=$(jq -r '.[].check_cpu_for_feature | select(. != null)' < "./rustc-target-features-optimized.json")

结果如下:

cpu_features_required_for_optimized_release='adx
sse2
avx2
avx
sse4_2
sse4_1'

以低格式输出json字符串

[root@VM_0_14_centos ~]# echo '{"name":"she","age":20}' |jq
{
  "name": "she",
  "age": 20
}
[root@VM_0_14_centos ~]# 

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php格式化字符串-linux命令下jq的使用(curl低格式输出json字符串) https://www.wkzy.net/game/175634.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务