【问题标题】:Replace text in specific position in line with system date根据系统日期替换特定位置的文本
【发布时间】:2020-10-25 10:47:12
【问题描述】:

我有一个单行文件。我想用系统日期(YYYY-MM-DD)替换位置 188(含)到 197 之间的文本。

我试过了,但它不起作用:

sed  's/\(.\{188\}\)\([0-9-]\{10\}\)\(.*\)/\1$(date '+%Y-%m-%d')\188/g'

我想使用 sed 或任何在 shell 脚本中工作的东西。

输入文件是:

{ "agent": { "run_as_user": "root" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/home/ec2-user/logs/**", "log_group_name": "Staging", "log_stream_name": "2020-10-24", "timestamp_format": "[%Y-%m-%d %H:%M:%S]" } ] } } } }

。 . .在输出中,我只想更改日期,如下所示。

{ "agent": { "run_as_user": "root" }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/home/ec2-user/logs/**", "log_group_name": "Staging", "log_stream_name": "2020-10-25", "timestamp_format": "[%Y-%m-%d %H:%M:%S]" } ] } } } }

【问题讨论】:

  • @RavinderSingh13 感谢您的反馈。查看了之前的答案并接受了。

标签: awk sed


【解决方案1】:

您能否尝试以下操作,按照 GNU awk 中显示的 OP 尝试编写。

awk -v date=$(date +%Y-%m-%d) '{print substr($0,1,187) date substr($0,198)}' Input_file

【讨论】:

  • 是否有可能有一个通用脚本来查找格式为 YYYY-MM-DD 的所有日期并用系统日期替换它们?
  • @AmitGupta,是的,我们可以这样做,因此您可以在这里搜索,您可能会得到与其相关的线程
猜你喜欢
  • 2015-12-15
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 2022-10-02
  • 2019-01-31
  • 2022-01-24
  • 1970-01-01
相关资源
最近更新 更多