如何在PowerShell与Bash中提取JSON的scope和pathSpec并按指定格式输出?
解决方案
先假设你的JSON结构类似这样(匹配你预期输出的示例):
[ { "scope": "file", "pathSpec": "/u01/app/grid/*/bin/oracle" }, { "scope": "directory", "pathSpec": "/u01/app/oracle/admin" } ]
Bash(jq)实现
你之前的jq命令是分开遍历两个字段,所以输出会各自独立。要让每个对象的scope和pathSpec对应输出,直接遍历数组内的每个元素,拼接两个字段即可:
jq -r '.[] | "\(.scope) \(.pathSpec)"' jsonfilepath
-r参数让jq输出原始字符串(不带JSON格式的引号).[]遍历数组中的每个对象"\(.scope) \(.pathSpec)"将当前对象的两个字段拼接成你需要的格式
PowerShell实现
用PowerShell的ConvertFrom-Json把JSON转成对象,再循环输出拼接后的内容:
Get-Content -Path "jsonfilepath" | ConvertFrom-Json | ForEach-Object { "$($_.scope) $($_.pathSpec)" }
Get-Content读取JSON文件内容ConvertFrom-Json把JSON字符串转换为PowerShell对象数组ForEach-Object遍历每个对象,通过字符串插值拼接scope和pathSpec字段
内容的提问来源于stack exchange,提问作者LEFBE
相关产品推荐
相关产品推荐

