Заменить каждое вхождение совпадения регулярного выражения с конкретным в редакторе VI? - PullRequest
0 голосов
/ 10 декабря 2018

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

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 / "kevin" / "informix" / g

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

1 Ответ

0 голосов
/ 10 декабря 2018
%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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...