【发布时间】:2022-11-14 21:24:29
【问题描述】:
我正在尝试用当前时间戳替换字符串中的一个单词,为此我正在使用 sed。但是,sed 使用所有 1000 条记录的单个时间时间戳值更新字符串。如何更新记录以获得实际时间戳。
cat toreplacefile.txt
TIMESTAMP_line1
TIMESTAMP_line2
TIMESTAMP_line3
TIMESTAMP_line4
TIMESTAMP_line5
sed 's/TIMESTAMP/$(date +"%Y-%m-%dT%H:%M:%S.%3N")/g' toreplacefile.txt
2022-11-14T10:11:43.654_line1
2022-11-14T10:11:43.654_line2
2022-11-14T10:11:43.654_line3
2022-11-14T10:11:43.654_line4
2022-11-14T10:11:43.654_line5
However, what I am expecting is a time change atleast in milliseconds.
2022-11-14T10:11:43.654_line1
2022-11-14T10:11:43.656_line2
2022-11-14T10:11:43.657_line3
2022-11-14T10:11:43.660_line4
2022-11-14T10:11:43.661_line5
【问题讨论】:
-
使用您发布的 sed 命令,您无法获得您声称的结果,因为单引号会禁止执行
date命令。即使有正确的引用,我也不希望毫秒值改变,直到文件真的很大,因为行的处理很可能在同一毫秒内完成。也许使用旧的、非常慢的计算机会有所帮助。 -
@user1934428 有没有其他方法可以在不使用 sed 的情况下实现时间戳的更改。
-
当然:编写一个 shell 循环,逐行读取文件,并为每一行生成一个您喜欢的输出时间戳。如果您在循环中放置
sleep,则可以生成相隔几秒的时间戳。