gpt4 book ai didi

bash - 使用 grep 在输出中构造字符串

转载 作者:行者123 更新时间:2023-11-29 09:42:25 25 4
gpt4 key购买 nike

我有一个 curl 命令

curl -u user:password -X POST -k http://artifactory:8081/artifactory/api/search/aql -d "items.find({\"type\" : \"folder\", \"repo\" : \"test-repo\", \"path\" : \""App_7.1.2"\", \"modified\" : {\"\$lt\" : \"2017-05-18\"}  })"

我得到的输出是这样的:

{
"results" : [ {
"repo" : "test-repo",
"path" : "App_7.1.2",
"name" : "66",
"type" : "folder",
"size" : 0,
"created" : "2016-05-26T09:40:03.332+03:00",
"created_by" : "user",
"modified" : "2016-05-26T09:40:03.332+03:00",
"modified_by" : "user",
"updated" : "2016-05-26T09:40:03.332+03:00"
},{
"repo" : "test-repo",
"path" : "App_7.1.2",
"name" : "67",
"type" : "folder",
"size" : 0,
"created" : "2016-05-31T19:19:35.040+03:00",
"created_by" : "user",
"modified" : "2016-05-31T19:19:35.040+03:00",
"modified_by" : "user",
"updated" : "2016-05-31T19:19:35.040+03:00"
} ]

我在上面的命令中添加了一个 grep 命令,它开始看起来像

curl -u user:password -X POST -k http://artifactory:8081/artifactory/api/search/aql -d "items.find({\"type\" : \"folder\", \"repo\" : \"test-repo\", \"path\" : \""App_7.1.2"\", \"modified\" : {\"\$lt\" : \"2017-05-18\"}  })" | grep -oP '\"name\" : \K.*' |tr -d '",'

我得到一个输出

66
67

所以我可以通过命令从这些字符串中创建一个数组:

($(curl -u user:password -X POST -k http://artifactory:8081/artifactory/api/search/aql -d "items.find({\"type\" : \"folder\", \"repo\" : \"test-repo\", \"path\" : \""App_7.1.2"\", \"modified\" : {\"\$lt\" : \"2017-05-18\"}  })" | grep -oP '\"name\" : \K.*' |tr -d '",'))

但我真正需要的是获取一个字符串数组,例如路径/名称。

所以应该是我的情况

App_7.1.2/66
App_7.1.2/67

你能告诉我,我该怎么做吗?我需要使用 grep 从输出中加入不同的字符串,这可能吗?提前致谢

最佳答案

在 Bash 中使用 JSON 时,我建议您通过管道传递 jq .我认为 grep 是这项工作的错误工具。这个命令给你你想要的:

curl https://example.com/ | jq --raw-output '.results | .[] | .path + "/" + .name'

jq 过滤器意味着:

  • .results - 读取 JSON 对象的“results”属性
  • .[] - 逐个读取数组中的每个元素
  • .path + "/"+ .name - 连接每个对象的“path”属性、“/”字符串和“name”属性

然后我们添加 --raw-output 标志以将结果输出为行而不是 JSON。

关于bash - 使用 grep 在输出中构造字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43582184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com