首页 > 解决方案 > 根据系统日期替换特定位置的文本

问题描述

我有一个单行文件。我想用系统日期(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]" } ] } } } }

标签: awksed

解决方案


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

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

推荐阅读