Заменить каждое вхождение совпадения регулярного выражения с конкретным в редакторе 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"