Заменить каждое вхождение совпадения регулярного выражения с конкретным в редакторе VI?

Предположим, у меня есть текстовый файл следующим образом.

create table "kevin".tb1 {
col1,
col2
}
create table "jhone".tb2 {
col1,
col2
}
create table "jake".tb3 {
col1,
col2

}

Мне нужно получить этот текстовый файл следующим образом, заменив каждое вхождение имени владельца таблицы на то же имя, называемое "informix".

выход должен быть как

create table "informix".tb1 {
col1,
col2
}
create table "informix".tb2 {
col1,
col2
}
create table "informix".tb3 {
col1,
col2
}

в редакторе vi,

:% S /"Кевин"/"Informix"/ г

Я могу заменить их по отдельности, но мне нужно сделать все сразу.

1 ответ

Решение
%s/\(create table\) "\i\+"/\1 "informix"/

Объяснение:

% — run through every line in the file
s/ — search and replace
\(create table\) — match the text and store it in the backreference 1
"\i\+" — match any number (more than 1) of identifier characters inside double quotes
\1 "informix" — replace what is found with backreference 1 (text "create table"), a space and text "informix"
Другие вопросы по тегам