shell - 使用 sed 我需要替换值
问题描述
{
"test.yaml": "# Copyright (c) 2019-2020 .\n# All Rights Reserved.\n#\n#\n\trace1:\n - trace-id:\n - \"immm-0555555555\"\n - \"mncid-6666666666\"\n test-service:\n - \"test-data\"\n proposed-date: 2019-06-26T16:32:52\n start-date: 2019-06-27T10:00:00\n end-date: 2050-06-27T10:30:00\n test-type: \"HIGH\""
}
以上是json内容,基本上我需要更新startdate enddate提出日期我使用sed命令更新
sed -i -e 's/start-date: .*\\n/start-date: 2013-06-27T10:00:00\\n/' /dummyfile.json
此命令执行后
{
"test.yaml": "# Copyright (c) 2019-2020 .\n# All Rights Reserved.\n#\n#\n\trace1:\n - trace-id:\n - \"immm-0555555555\"\n - \"mncid-6666666666\"\n test-service:\n - \"test-data\"\n proposed-date: 2019-06-26T16:32:52\n start-date: 2013-06-27T10:00:00\n test-type: \"HIGH\""
}
但是像这个结束日期这样的更新也被删除了
解决方案
您的 JSON 看起来不是 100% 有效,但使用有效的 JSON,请使用 jq 例如:
jq '.start-date="2013-06-27T10:00:00" | .end-date="2013-06-27T10:00:00" | .proposed-date="2013-06-27T10:00:00"' dummy-file.json
推荐阅读
- python - 查找最近编辑的文件的 Python 脚本(从前两天到现在编辑)
- image - Matlab中的图像处理低通滤波器
- node.js - 如何通过托管在 IIS 服务器上在 https 上运行节点应用程序
- laravel - Laravel - 搜索提交未重定向到下一个刀片
- python - Python:使用循环提取多列的日期时间值并忽略 NaN
- swiftui - swiftui+combine:为什么滚动 LazyVGrid 时 isFavoriteO 改变了?
- python - 如何创建字典并将多列的值存储到一列并将其重建回原始数据框?
- javascript - 为什么这个 JavaScript 没有执行?
- python - 如何在模块级别的 pytest 脚本中定义要在夹具中使用的值?
- twisted - 升级到 Twisted 21.2.0 时出现 Mypy 输入错误