Json 在jq命令的输出中追加字符串和特殊字符
我有一个json文件GroupList.json:Json 在jq命令的输出中追加字符串和特殊字符,json,jq,confluence-rest-api,Json,Jq,Confluence Rest Api,我有一个json文件GroupList.json: { "results": [ { "type": "known", "username": "USERID1", "displayName": "DISPLAYNAME1", "_links": { "
{
"results": [
{
"type": "known",
"username": "USERID1",
"displayName": "DISPLAYNAME1",
"_links": {
"self": "https://confluence.com/rest/api/user?key=123"
},
"_expandable": {
"status": ""
}
},
{
"type": "known",
"username": "USERID2",
"displayName": "DISPLAYNAME2",
"_links": {
"self": "https://confluence.com/rest/api/user?key=1234"
},
"_expandable": {
"status": ""
}
}
],
"start": 0,
"limit": 50000,
"size": 2,
"_links": {
"self": "https://confluence.com/rest/api/group/GROUPNAME/member",
"base": "https://confluence.com"
}
}
我正在使用以下命令获取用户名:
jq-r'.results|map(.username)| join(“,”)GroupList.json>UserNameList.txt
UserNameList.txt中的输出为:
USERID1、USERID2
我想将输出修改为:
SPACEKEY:GROUPNAME:USERID1、USERID2
SPACEKEY和GROUPNAME是两个变量,其值在每次迭代中都会更改。对于您的文件,以下调用将生成如下所示的输出:
jq -r --arg prefix "SPACEKEY : GROUPNAME : " '
$prefix + (.results | map(.username) | join(","))
' GroupList.json
输出
您是否尝试使用--arg选项--arg name value我确实尝试过--arg,但无法制定命令来实现我的要求jq-r--arg foo“123”.结果| map($foo+.username)| join(“,”)file.txt>users.txt-这在我测试时有效。当您说出“每次迭代”时,结果集合中的每条记录都会显示空格键和groupname。这就是你想要的吗?那么,也许上面的样式可以吗?正如您提到的,每个记录都会显示空格键和组名。我不希望每一张唱片都有它们。现在它就像“spacekey groupname userid1”“spacekey groupname userid2”一样,我希望它是:“spacekey groupname userid1,userid2”
SPACEKEY : GROUPNAME : USERID1,USERID2