Заменяющая строка Vim для той же строки формата, но разных имен - PullRequest
0 голосов
/ 10 октября 2018

Файл выглядит следующим образом:

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(...)/

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Если ваши данные структурированы точно так же, как и без других строк, разделенных ', а содержимое всегда является датой, которую вы хотите преобразовать, поиск просто '.*' будет работать:

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

Чтобы быть более конкретным, то есть если другие строки появляются в той же строке:

:%s/'\d*-\d*-\d*'/STR_TO_DATE(&, %d-%m-%y)
0 голосов
/ 10 октября 2018

Вот пример решения: :%s/\(INSERT INTO x VALUES (.*,\) '\(.*\)'\(.*\)/\1 STR_TO_DATE('\2', %d-%m-%y)\3/g

Соответствующее чтение

...