Как заменить часть строки с помощью регулярных выражений в Vim


Допустим нужно заменить значения тегов, но они разные в каждой строке и обычными методами поиска замены такого не сделать. Но это лекго делается с помощью регулярных выражений в редакторе Vim.

Подготовим в Excel таблицу соответствия тега строке. В одном столбце строка для замены, в следующем имена тегов для замены.

Исходная строкаВыражение для замены
ServerName=Server-Tag=Tag1-ID=4546464-Rule=FalseTag35
ServerName=Server-Tag=Tag2-ID=4546464-Rule=FalseTag36
ServerName=Server-Tag=Tag3-ID=4546464-Rule=FalseTag37
ServerName=Server-Tag=Tag4-ID=4546464-Rule=FalseTag38

Скопируем текст из двух столбцов и вставим в Vim. Для перехода в режим команд нажми ESC. Введи команду и нажми Enter.

исходная строка
ServerName=Server-Tag=Tag1-ID=4546464-Rule=False Tag35
команда
:%s/\(.*Tag=\).*\(-ServerU.*\)\(T.Uis3.*\)/\1\3\2/g
результат
ServerName=Server-Tag=Tag35-ID=4546464-Rule=False

В итоге мы заменили во всех строках выражение между [выражение1] и [выражение2] на [выражение3].

Каждое выражение разделено на группы. Группы отделяются скобками, скобки необходимо экранировать обратным слэшем \(.*Tag=\). При замене номер группы идут по порядку их определения /\1\3\2.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *