JQ-如何定义过滤器以从输出数组中删除括号,引号和逗号

问题描述 投票:0回答:1

我需要将输出数组转换为没有括号,引号和逗号的行,以便可以将其用于创建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

第一部分是this link的一部分

我需要对JQ过滤器进行哪些更改才能执行此操作?实际上,我需要从BitBucket项目中克隆40多个存储库,并且我想创建一个简单的脚本,而不必先获取列表。

git output jq xargs
1个回答
0
投票

您可以简单地将以下jq过滤器添加到产生两个字符串数组的过滤器上:

.[]

或更经济地,只需从jq查询中删除外部方括号。

重点是,-r选项仅在作为JSON字符串(不是复合实体中的字符串)的输出上去除双引号。

© www.soinside.com 2019 - 2024. All rights reserved.