将文件中的所有 YYYY-MM-DD 更改为 YYYYMMDD

将文件中的所有 YYYY-MM-DD 更改为 YYYYMMDD

我不能直接删除所有连字符,因为在其他地方它们被用作减号。我可以用 找到这些日期,[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}但我不知道如何将这三个不同的数字通配符保存在内存中。我尝试用搜索字符串(例如:%s/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/[0-9]\{4\}[0-9]\{2\}[0-9]\{2\}/g)替换日期。

有什么想法吗?如果有命令行解决方案,我也很乐意学习。谢谢!

答案1

您只需要使用捕获组:

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

括号内捕获匹配项,然后反向引用输出这些捕获组。由于连字符在组外,因此被排除。

答案2

我不了解 vim,所以这是一个你仍然可以在 vim 中执行的解决方法:

由于您可以找到日期中出现的连字符,因此请用您知道文档中不会出现的其他内容(字符或字符串)替换它们。然后进行第二次搜索/替换,用空字符替换新字符/字符串,从而将其删除。

相关内容