我有一个文件,里面有很多数据,其中一个是最后修改的="1231231231"
其中1231231231是以毫秒为单位的历元时间
<Translation
author_id="25"
id="02f18edd-ef7a-48e2-b614-b5888936017e"
language="de_DE"
last_modified="1325669156960"
phase="1"
target="[ phase="1" language="de_DE" ]"
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="1" language="de_DE" ]"
translation_text="Funktionen"/>