我有一个包含大量数据的文件,其中一个是最后修改过的=“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
在这个例子中,不是替换为我找到的相同值(即,&amp;),
我想以某种方式将这个价值传递到本质上:
date -d &
并将其作为
中的格式化时间戳记返回last_modified="Wed Jan 4 07:13:32 MST 2012"
关于如何做到这一点的任何想法?我必须每隔一周在各种文件上这样做。
答案 0 :(得分:2)
您可以在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"/>