【发布时间】:2021-11-19 13:28:22
【问题描述】:
我有一个如下所示的文件:
{
"Job": {
"Name": "sample_job",
"Description": "",
"Role": "arn:aws:iam::00000000000:role/sample_role",
"CreatedOn": "2021-10-21T23:35:23.660000-03:00",
"LastModifiedOn": "2021-10-21T23:45:41.771000-03:00",
"ExecutionProperty": {
"MaxConcurrentRuns": 1
},
"Command": {
"Name": "glueetl",
"ScriptLocation": "s3://aws-sample-s3/scripts/sample.py",
"PythonVersion": "3"
},
"DefaultArguments": {
"--TempDir": "s3://aws-sample-s3/temporary/",
"--class": "GlueApp",
"--enable-continuous-cloudwatch-log": "true",
"--enable-glue-datacatalog": "true",
"--enable-metrics": "true",
"--enable-spark-ui": "true",
"--job-bookmark-option": "job-bookmark-enable",
"--job-insights-byo-rules": "",
"--job-language": "python",
"--spark-event-logs-path": "s3://aws-sample-s3/logs"
},
"MaxRetries": 0,
"AllocatedCapacity": 100,
"Timeout": 2880,
"MaxCapacity": 100.0,
"WorkerType": "G.1X",
"NumberOfWorkers": 100,
"GlueVersion": "2.0"
}
}
我想从"Name"、"--enable-continuous-cloudwatch-log": "" 和"--enable-metrics": "" 获取键/值。所以,我需要显示这样的信息:
"Name" "sample_job"
"--enable-continuous-cloudwatch-log" ""
"--enable-metrics" ""
UPDATE
按照@Inian 和@0stone0 的提示,我接近了它:
jq -r '(.Job ) + (.Job.DefaultArguments | { "--enable-continuous-cloudwatch-log", "--enable-metrics"}) | to_entries[] | "\"\(.key)\" \"\(.value)\""'
这会提取我需要的值,但会显示所有其他键/值。
【问题讨论】:
-
您的 JSOn 无效。请修复它
-
这是一个来自AWS的JSON,我只是剪了几行
-
缺少一个右括号,请显示正确的数据顺序。
DefaultArguments是Job的一部分吗?请确保 linter 理解你的 json -
这是来自 AWS Glue 作业的 sn-p,我使用
aws glue get-job --job-name sample_job获取 JSON。而且,是的DefaultArguments是Job的一部分。 -
不确定我现在删除的答案中的 cmets 是什么意思。我根据您提供的输入发布了答案。如果你在不同的 JSON 上测试它,它就不能工作