gpt4 book ai didi

linux - vim 搜索纪元时间字符串,管道到 date -d 并将日期返回到文件中

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:17 25 4
gpt4 key购买 nike

我有一个包含很多数据的文件,其中一个是 last-modified="1231231231"

其中 1231231231 是以毫秒为单位的纪元时间

<Translation 
author_id="25"
id="02f18edd-ef7a-48e2-b614-b5888936017e"
language="de_DE"
last_modified="1325669156960"
phase="1"
target="[ phase=&quot;1&quot; language=&quot;de_DE&quot; ]"
translation_text="Funktionen"/>

注意:last_modified="1325669156960"

我可以运行这个:

:%s/\([0-9]\{10\}\)\([0-9]\{3\}\)/\1/g  

找到所有这些事件并将它们替换为“秒”字符串:

last_modified="1325669156"

然后我可以对这 10 个数字进行模式匹配,我想做的是将它们通过管道传输到 unix data -d 命令以返回格式化的数据戳:

:%s/[0-9]\{10\}/&/g 

在这个例子中,不是替换为我找到的相同值(即 &),

我想以某种方式将该值传递给本质上的值:

date -d &

并将其作为格式化的时间戳返回

last_modified="Wed Jan  4 07:13:32 MST 2012"

关于如何做到这一点有什么想法吗?我必须每隔一周对各种文件执行一次此操作。

最佳答案

你可以在 vim 中使用 strftime()。找到一种合适的格式字符串来满足您的需求。
我在这里使用 %c:

:%s/last_modified="\zs\(\d\{10}\)\d\{3}/\=strftime('%c', str2nr(submatch(1)))/g

结果:

<Translation 
author_id="25"
id="02f18edd-ef7a-48e2-b614-b5888936017e"
language="de_DE"
last_modified="2012-1-4 17:25:56"
phase="1"
target="[ phase=&quot;1&quot; language=&quot;de_DE&quot; ]"
translation_text="Funktionen"/>

关于linux - vim 搜索纪元时间字符串,管道到 date -d 并将日期返回到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9527278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com