Команды поиска и замены строк
Для поиска строки по шаблону можно воспользоваться следующими коман- дами:
r /шаблон — для поиска с текущей позиции до конца файла;
r ?шаблон — для поиска с текущей позиции в начало файла.
Эти команды установят курсор на начало первой найденной строки, удовле- творяющей шаблону. Для продолжения поиска надо набрать команду n.
Поиск с заменой найденных строк в vi осуществляется с помощью команды режима последней строки :s/шаблон/замена/.
Для демонстрации команд замены текста здесь использован текст, приведен- ный в примере 7.1.
Пример 7.1. Исходный текст |
The top ten & ten CC. The best Ten in the World of tens. Another ten.
Another Ten.
В приведенном тексте несколько раз встречается слово ten, а также Ten.
Предполагается, что курсор находится в первой строке текста.
Для замены в текущей строке первого вхождения строки ten на 10 следует ввести команду, приведенную в примере 7.2.
Пример 7.2. Поиск и замена строк |
:s/ten/10/
В результате команды из примера 7.2, получим текст, показанный в приме- ре 7.3.
Пример 7.3. Текст после замены слова ten на строку 10 |
The top 10 & ten CC. The best Ten in the World of tens. Another ten.
Another Ten.
Первое вхождение строки ten было заменено на 10 в текущей строке, но не в других строках. Обратите внимание: было заменено именно первое вхож- дение строки.
Если же необходимо в текущей строке заменить все вхождения, а не только первое, то в конец этой команды надо добавить модификатор g (от англ. go) (пример 7.4).
Пример 7.4. Поиск всех вхождений шаблона в строке |
:s/ten/10/g
Результат работы команды из примера 7.4 показан в примере 7.5.
Пример 7.5. Текст после замены всех вхождений ten строкой 10 |
The top 10 & 10 CC. The best Ten in the World of 10s. Another ten.
Another Ten.
Бывает необходимо заменить строки без учета их регистра, например, ten
и Ten на 10. Это позволяет сделать модификатор i (пример 7.6).
Пример 7.6. Поиск и замена с игнорированием регистра |
:s/ten/10/i
В примере 7.7 показан текст после выполнения команды из примера 7.6.
Пример 7.7. Текст после поиска с игнорированием регистра |
The top 10 & 10 CC. The best 10 in the World of 10s. Another ten.
Another Ten.
Для замены в нескольких строках в приведенные выше команды требуется добавить указание диапазона поиска. Например, для поиска по всему файлу и замены всех вхождений искомой строки можно ввести команду, приведен- ную в примере 7.8.
Пример 7.8. Поиск всех вхождений строки по всему файлу |
:%s/ten/10/gi
Оператор % указывает диапазон поиска — весь файл. Модификатор i добав- лен для игнорирования регистра при поиске.
В результате выполнения команды из примера 7.8 текст будет выглядеть так, как это показано в примере 7.9.
Пример 7.9. Текст после замены строк по всему тексту с игнорированием регистра |
The top 10 & 10 CC. The best 10 in the World of 10s. Another 10.
Another 10.
Диапазон поиска можно указывать:
r номерами начальной и конечной строк, например: :3,5s/ten/10/;
r номером конечной строки для замены с текущей строки: :,5s/ten/10/;
r смещением от текущей строки: :,+5s/ten/10/;
r символом конца файла: :3,$s/ten/10/.
Дата добавления: 2015-06-12; просмотров: 691;