Vim 将字符串替换为格式相同但名称不同的字符串
Vim substitute string for same format string but different names
文件看起来像:
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(...)/
下面是一个解决方案示例:
:%s/\(INSERT INTO x VALUES (.*,\) '\(.*\)'\(.*\)/ STR_TO_DATE('', %d-%m-%y)/g
如果您的数据结构与 '
分隔的其他字符串完全相同,并且内容始终是您要转换的日期,则只需搜索 '.*'
即可:
:%s/'.*'/STR_TO_DATE(&, %d-%m-%y)
更具体地说,即如果其他字符串出现在同一行:
:%s/'\d*-\d*-\d*'/STR_TO_DATE(&, %d-%m-%y)
文件看起来像:
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(...)/
下面是一个解决方案示例:
:%s/\(INSERT INTO x VALUES (.*,\) '\(.*\)'\(.*\)/ STR_TO_DATE('', %d-%m-%y)/g
如果您的数据结构与 '
分隔的其他字符串完全相同,并且内容始终是您要转换的日期,则只需搜索 '.*'
即可:
:%s/'.*'/STR_TO_DATE(&, %d-%m-%y)
更具体地说,即如果其他字符串出现在同一行:
:%s/'\d*-\d*-\d*'/STR_TO_DATE(&, %d-%m-%y)