【发布时间】:2019-07-02 14:14:43
【问题描述】:
当使用 SED 将时间戳替换为人类可读的日期时,时间戳总是替换为纪元日期加上放置在“\”之后的值
我有这个使用 Perl 的例子,但更喜欢使用 sed。我尝试了不同的转义序列并引用“'`等。
sed -re "s/([0-9]{10})/$(date -d @\1)/g" mac.txt
输入(一个字符串):
834|task|3||1561834555|Ods|12015|info|Task HMI starting 837|task|3||1561834702|Nailsd|5041|info|Configured with engine 6000.8403 (/opt/NAI/LinuxShield/engine/lib/liblnxfv.so), dats 9297.0000 (/opt/NAI/LinuxShield/engine/dat), 197 extensions, 0 extra drivers
预计日期转换,但结果是:
834|task|3||Wed Dec 31 19:00:01 EST 1969|Ods|12015|info|Task HMI starting 837|task|3||Wed Dec 31 19:00:01 EST 1969|Nailsd|5041|info|Configured with engine 6000.8403 (/opt/NAI/LinuxShield/engine/lib/liblnxfv.so), dats 9297.0000 (/opt/NAI/LinuxShield/engine/dat), 197 extensions, 0 extra drivers 838|task.
基本上: 这就是所谓的:
$(date -d @\1) instead of $(date -d @\1561834555)
【问题讨论】: