Читаем Командная строка Linux. Полное руководство полностью

затем нажмите ENTER. Курсор переместится в строку 2. Затем введите команду n, и курсор переместится в строку 3. С каждой следующей командой n курсор будет перемещаться вниз по файлу, пока не достигнет последнего вхождения искомого фрагмента. В примерах выше мы использовали для поиска только слова и фразы, однако vi позволяет применять регулярные выражения — очень мощное средство выражения сложных шаблонов текста. Мы подробно обсудим регулярные выражения в главе 19.

Глобальный поиск и замена


Для выполнения поиска с заменой (в vi эта операция называется подстановкой) в диапазоне строк или во всем файле vi использует ex-команды. Например, заменить слово Строка словом строка во всем файле можно следующей командой:

:%s/Строка/строка/g

Давайте разобьем эту команду на элементы и рассмотрим их по отдельности (табл. 12.5).

Таблица 12.5. Пример синтаксиса команды глобального поиска с заменой

Элемент

Значение

:

Символ двоеточия начинает ex-команду

%

Определяет диапазон строк, где будет выполняться поиск. % — сокращение, означающее «от первой строки до последней». В этом примере можно было бы указать диапазон номеров строк 1,5 (потому что в нашем файле всего пять строк) или 1,$, что означает «от строки с номером 1 до последней». Если диапазон строк не указан, операция применяется только к текущей строке

s

Определяет операцию — в данном случае подстановку (substitution) или поиск с заменой

/Line/line/

Шаблон поиска и текст замены

g

Означает global (глобально), в том смысле, что подстановка выполняется для всех вхождений искомой строки в каждой строке. Если элемент g опустить, операция выполнит замену только первого вхождения искомого фрагмента в каждой строке


После выполнения поиска с заменой наш файл будет выглядеть так:

Съешь же ещё этих мягких французских булок, да выпей чаю. Это классно.

строка 2

строка 3

строка 4

строка 5

В команде подстановки можно указать, что она должна запрашивать подтверждение у пользователя перед заменой. Для этого добавьте символ c в конец команды. Например:

:%s/строка/Строка/gc

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

заменить на Строка? (y/n/a/q/l/^E/^Y)

В круглых скобках перечислены возможные варианты ответов, описание которых приводится в табл. 12.6.

Таблица 12.6. Клавиши подтверждения замены

Клавиша

Действие

y

Выполнить замену

n

Пропустить найденное вхождение

a

Выполнить замену этого и всех последующих вхождений

q или ESC

Завершить операцию

l

Выполнить замену этого вхождения и завершить операцию. Сокращенно от last (последняя)

CTRL+E, CTRL+Y

Прокрутить вниз или вверх соответственно. Эти команды удобно использовать для просмотра контекста найденного вхождения перед заменой


Редактирование нескольких файлов


Иногда бывает необходимо редактировать сразу несколько файлов. Например, может понадобиться внести изменения в файлы или скопировать содержимое из одного файла в другой. Редактор vi позволяет открыть несколько файлов, перечислив их в командной строке:

vi файл1 файл2 файл3...

Давайте закроем текущий сеанс работы vi и создадим новый файл для редактирования. Введите :wq, чтобы выйти из vi с сохранением изменений в тексте. Далее, создайте новый файл в домашнем каталоге, который мы будем использовать в наших экспериментах. Создайте файл, захватив в него вывод команды ls:

[me@linuxbox ~]$ ls -l /usr/bin > ls-output.txt

Теперь откройте в vi старый и новый файлы:

[me@linuxbox ~]$ vi foo.txt ls-output.txt

После запуска vi вы увидите на экране первый файл:

Съешь же ещё этих мягких французских булок, да выпей чаю. Это классно.

Строка 2

Строка 3

Строка 4

Строка 5

Переключение между файлами


Чтобы переключиться с одного файла на следующий, выполните ex-команду:

:n

Чтобы вернуться обратно, в предыдущий файл, выполните:

:N

Перейти на страницу:

Похожие книги

Компьютерные сети. 6-е изд.
Компьютерные сети. 6-е изд.

Перед вами шестое издание самой авторитетной книги по современным сетевым технологиям, написанное признанным экспертом Эндрю Таненбаумом в соавторстве со специалистом компании Google Дэвидом Уэзероллом и профессором Чикагского университета Ником Фимстером. Первая версия этого классического труда появилась на свет в далеком 1980 году, и с тех пор каждое издание книги неизменно становилось бестселлером. В книге последовательно изложены основные концепции, определяющие современное состояние компьютерных сетей и тенденции их развития. Авторы подробно объясняют устройство и принципы работы аппаратного и программного обеспечения, рассматривают все аспекты и уровни организации сетей — от физического до прикладного. Изложение теоретических принципов дополняется яркими, показательными примерами функционирования интернета и компьютерных сетей различного типа. Большое внимание уделяется сетевой безопасности. Шестое издание полностью переработано с учетом изменений, произошедших в сфере сетевых технологий за последние годы, и, в частности, освещает такие технологии, как DOCSIS, 4G и 5G, беспроводные сети стандарта 802.11ax, 100-гигабитные сети Ethernet, интернет вещей, современные транспортные протоколы CUBIC TCP, QUIC и BBR, программно-конфигурируемые сети и многое другое.

Дэвид Уэзеролл , Ник Фимстер , Эндрю Таненбаум

Учебные пособия, самоучители