bash - 从 bash 中的输出流中提取特定值
问题描述
我有这个命令:
`curl -X POST https://server.domain.com/v2/jobs/$job_ID/runs?project_id=$project_ID -H "Content-Type: application/json" -H "Authorization: Bearer ${token}" -d "{ \"job_run\": {} }"
它给出了这个输出
作业执行的响应是 {"metadata":{"rov":{"mode":0,"collaborator_ids":{}},"project_id":"aff59748-260a-476e-9578-b4f4a93e7a92","sandbox_id" :"aff59748-260a-476e-9578-b4f4a93e7a92","用法":{"last_updated_at":"2021-02-12T00:31:19Z","last_updater_id":"1000331040","last_update_time":1613089879840,"last_accessed_at ":"2021-02-12T00:31:19Z","last_access_time":1613089879840,"last_accessor_id":"1000331040","access_count":0},"name":"笔记本作业","description":"" ,"tags":[],"asset_type":"job_run","origin_country":"us","rating":0,"total_ratings":0,"catalog_id":"d47cd45c-0161-4b89-ba4f-c0e48272f08e","created":1613089879840,"created_at":"2021-02-12T00:31:19Z","owner_id":"1000331040" ,"size":0,"version":2,"asset_state":"available","asset_attributes":["job_run"], "asset_id":"5d9dae4e-0dfe-4e53-9e56-18a4bb44af"5d9dae4e-0dfe-4e53-9e56-18a4bb44af"5d9dae4e-0dfe-4e53-9e56-18a4bb44af","asset_category":"USER"},"entity":{"job_run":{"job_ref":"28723316-9373-44ba-9229-7c796f21b099","job_name":"E2E 测试的虚拟作业","job_type ":"notebook","state":"Starting","isScheduledRun":false,"configuration":{"env_id":"jupconda37-aff59748-260a-476e-9578-b4f4a93e7a92","version":"ca0b9a58- ba0d-4d28-93d5-3cdc66a5b137","env_type":"notebook","env_variables":[],"job_manager_id":"9268a8a8-72e4-47a1-a851-65f38d8284ce","notebook_job_output":{},"command_line_arguments" :[]},"project_name":"Tahoe Migration"}},"href":"/v2/assets/5d9dae4e-0dfe-4e53-9e56-ee18a4bb44af?project_id=aff59748-260a-476e-9578-b4f4a93e7a92"}
我想从输出流中提取asset_id的值并将其存储在shell 脚本中的变量中。我尝试将响应存储在 bash 变量中并尝试使用 awk 进行解析,但没有成功。你们中的一个可以给我一个关于如何解决这个问题的想法吗?
谢谢
解决方案
jq
处理json要好得多,尽管您需要先去掉“作业执行中的引用响应是”前缀。像这样的东西:
response=$(curl ...)
asset_id=$(echo "${response#*Response from job execution is }" | jq -r '.metadata.asset_id')
推荐阅读
- python - 在 TensorFlow 2.0 中,如何将 TFRecord 数据提供给 keras 模型?
- android - 如何停止在输入法中触发“updateCursor”事件?
- machine-learning - 在嵌入式系统上加载经过训练的模型(无库)
- typescript - 带有扩展另一个类的类的打字稿定义文件(自动生成)
- linux - How to access local variables in remote server using ssh
- spring - 谁能解释一下 JdbcClientDetailsServiceBuilder 的使用?
- javascript - 以角度将HTML页面导出为pdf
- javascript - 通过 Chromecast cast_sender.js 流式传输时出错
- mysql - 无论如何,是否只将唯一条目插入到 MYSQL 中的数据透视表中?
- c# - .NET:从域和子文件夹重定向到新域,保留路径和查询字符串,在 web.config 中使用 httpredirect