【问题标题】:Vim substitute string for same format string but different namesVim 用相同的格式字符串替换字符串但名称不同
【发布时间】:2018-10-10 02:42:13
【问题描述】:

文件看起来像:

INSERT INTO x VALUES (48394, '9-10-2007', 19);
INSERT INTO x VALUES (99981, '3-5-2008', 45);

我想将每一行替换为:

INSERT INTO x VALUES (48394, STR_TO_DATE('9-10-2007', %d-%m-%y), 19);
INSERT INTO x VALUES (99981, STR_TO_DATE('3-5-2008', %d-%m-%y), 45);

我似乎找不到如何处理更改要替换的字符串名称

:%s/<WHAT GOES HERE>/add in STR_TO_DATE(...)/

【问题讨论】:

    标签: vim vi substitution


    【解决方案1】:

    如果您的数据结构与此完全相同,没有其他由' 分隔的字符串,并且内容始终是您要转换的日期,则只需搜索'.*' 即可:

    :%s/'.*'/STR_TO_DATE(&, %d-%m-%y)
    

    更具体地说,即如果其他字符串出现在同一行:

    :%s/'\d*-\d*-\d*'/STR_TO_DATE(&, %d-%m-%y)
    

    【讨论】:

      【解决方案2】:

      以下是一个解决方案示例: :%s/\(INSERT INTO x VALUES (.*,\) '\(.*\)'\(.*\)/\1 STR_TO_DATE('\2', %d-%m-%y)\3/g

      Relevant reading

      【讨论】:

        猜你喜欢
        • 2011-04-28
        • 2020-08-31
        • 2016-05-18
        • 1970-01-01
        • 1970-01-01
        • 2014-12-17
        • 1970-01-01
        • 2015-06-18
        相关资源
        最近更新 更多