git - JQ - 如何定义过滤器以从输出数组中删除括号、引号和逗号
问题描述
我需要将输出数组转换为不带括号、引号和逗号的行,以便它可以用于创建 git 克隆。
这是我的原始查询
curl -s http://bitbucketlocalserver:7990/rest/api/1.0/projects/PROJECT_NAME/repos?per_page=20 ^
-u user:pass | H:\Downloads\Win64\jq-win64.exe -r "[.values[] | ((.links.clone[] | select(.name==\"http\") | .href) + \" \" + .name)]"
它返回格式的输出
[
"http://bitbucketlocalserver:7990/scm/PROJECT_NAME/gitrepo1.git GitRepository1",
"http://bitbucketlocalserver:7990/scm/PROJECT_NAME/gitrepo1.git GitRepository2"
]
我想将输出用作另一个命令的输入,如下所示
curl -s http://bitbucketlocalserver:7990/rest/api/1.0/projects/PROJECT_NAME/repos?per_page=20 ^
-u user:pass | H:\Downloads\Win64\jq-win64.exe -r "[.values[] | ((.links.clone[] | select(.name==\"http\") | .href) + \" \" + .name)]" | ^
H:\Utilities\Git\usr\bin\xargs.exe -n 2 git clone -b release-dev
为了能够使用这个命令,jq 命令的输出需要是这样的
http://bitbucketlocalserver:7990/scm/PROJECT_NAME/gitrepo1.git GitRepository1
http://bitbucketlocalserver:7990/scm/PROJECT_NAME/gitrepo1.git GitRepository2
第一部分是此链接的一部分
我需要对 JQ 过滤器进行哪些更改才能执行此操作?实际上,我需要从 BitBucket 项目中克隆 40 多个存储库,并且我想创建一个不需要先获取列表的简单脚本。
解决方案
您可以简单地将以下 jq 过滤器附加到生成两个字符串数组的过滤器上:
.[]
或者更经济,只需从 jq 查询中删除外部方括号。
关键是 -r 选项仅去除作为 JSON 字符串(而不是复合实体中的字符串)的输出上的双引号。
推荐阅读
- c# - c# 允许 list.add 中的重复项
- flutter - 通过添加 void 函数,它不会调用 statlessWidget 的 build 方法
- javascript - “flex: 1 1 0%” 带有适应其大小的画布子项无法正常工作
- nlog - NLog、ASP.NET Core 5.0、ClearProviders 和使用 OutputDebugString 的区别
- paramiko - 如何使用 paramiko 打开真正的终端窗口?
- .net - 如何使用 Oracle.DataAccess 安全地安装包
- java - 多模块项目 - gradle build 卡住
- angular - Angular 使用带有 Jasmine TypeError 的 Karma:this.Service。
不是 Lifecycle Hook 中的函数 - node.js - Typeorm:在单个连接中使用多个数据库 Postgresql - nodejs
- angular - Angular 单元测试点击事件,仅使用 Jasmin 和 Karma 执行 navigateByUrl