Как использовать Vim для поиска и замены участка текста, соответствующего определенному шаблону?

Как можно использовать замену vim для поиска и замены участков текста /24 с условием, что перед искомым шаблоном есть .0, подобно позитивному/негативному просмотру назад/вперед в регулярных выражениях?
  • 19 декабря 2023 г. 5:57
Ответы на вопрос 2
В Vim вы можете использовать команду substitute (`:s`) для поиска и замены участка текста, соответствующего определенному шаблону.

Для выполнения поиска и замены участков текста /24 с условием, что перед искомым шаблоном есть `.0`, вы можете использовать следующую команду:

```
:%s/\.0\(\d\{1,3\}\)\.0/REPLACE_STRING/g
```

Команда разбивается на несколько частей:
- `%s` означает выполнение замены на всем тексте.
- `\.0` ищет точку (`.`), за которой следует `0` (то есть `.0`).
- `\(\d\{1,3\}\)` означает поиск группы из 1-3 цифр (от 0 до 9).
- `\.0` ищет точку (`.`), за которой следует `0` (то есть `.0`).
- `REPLACE_STRING` - строка, на которую заменяется найденный шаблон.
- `g` означает, что замена должна выполниться для каждого соответствия на строке. (если не указана g, замена произойдет только для первого соответствия на строке)

Пример:
Предположим, у вас есть следующий текст:

```
192.168.0.0/24
10.0.0.0/24
172.16.0.0/24
```

Вы можете использовать команду:

```
:%s/\.0\(\d\{1,3\}\)\.0/REPLACED_IP_ADDRESS/g
```

Если `REPLACED_IP_ADDRESS` равно `255`, замена произойдет следующим образом:

```
192.168.255.0/24
10.0.0.0/24
172.16.255.0/24
```

Обратите внимание, что в данной команде `.` имеет специальное значение в регулярных выражениях, поэтому мы должны использовать `\` для его экранирования.
:help search-pattern 
Твой пример в vim можно записать как \(\.0\)\@<=\/24 , найти и заменить во всём файле будет :%s,\(\.0\)\@<=\/24,заменить на это,g
Похожие вопросы