Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

6.10. Команда замены (s)

Команда замены "s" предназначена для изменения отдельных слов или символов в пределах одной строки или группы строк.

Общий формат команды:

	[n[, k]]s/x/y/[команда]<CR>
где x - группа символов или слов в строке, которые надо заменить (старый текст);
y - группа символов или слов, которые заменяют старое значение, указанное как "x" (новый текст);
n, k - номера начальной и конечной строк буфера, в пределах которых осуществляется замена;
/команда - одна из следующих 4-х команд:
g - заменить каждое появление группы символов (x) в каждой указанной строке;
l - отобразить последнюю строку замененного текста, включая непечатаемые символы;
n - отобразить последнюю строку замененного текста, вместе с номерами строк;
p - отобразить последнюю строку замененного текста.

Если номера строк не указаны, замена осуществляется в текущей строке.

Если указан номер только одной строки, то замена производится только в одной строке.

Для реализации замены в группе строк надо указать номера начальной (n) и конечной (k) строк, в пределах которых надо произвести замену.

При выполнении данной команды редактор просматривает строки, начиная с номера "n" и кончая номером "k" включительно. При обнаружении в какой-либо из них искомой группы "x" редактор заменяет ее на "y".

Редактор не печатает результат замены автоматически, поэтому для контроля рекомендуется вместе с командой замены задавать команду печати.

Если в командной строке указаны "n" и "k" и команда печати, то печатается только последняя измененная строка.

Текущей строкой после выполнения команды замены остается последняя строка, в которой произведена замена части текста.

Пример.

        1, $s/a/a2/p 
замена символа "a" на "a2" производится в строках с 1-й по последнюю. Текущей станет последняя строка, она будет распечатана.

Используя команду "s", можно удалить группу символов (или один символ) в строке. Для этого команда замены должна быть задана следующим образом:

	s/x//
что фактически означает: заменить группу символов в текущей строке на "пусто", т.е. просто удалить заданные символы из строки.

Команда "s" заменяет лишь первую найденную искомую группу символов в строке. Если же надо заменить все случаи появления заданной комбинации символов в строке, используется команда "g":

	s/x/y/g 
Примеры.
	s/c/d/gp 
все появления символа "c" в текущей строке заменить символом "d" и распечатать строку;
	1, $s/c/d/gp 
замена всех символов "c" на символ "d" во всем буфере с печатью последней измененной строки.

В следующем примере содержится ошибка ввода. Пока строка, содержащая ошибку является текущей, произведите корректировку в ней. Старый текст: "ai" в слове "airor", новый текст - "er". Экран выглядит следующим образом:

Пример.

        a<CR>
        In the beginning, I made an airor.<CR>
        .<CR>
        .p<CR>
        In the beginning, I made an airor.<CR>
        s/ai/er/<CR>

Обратите внимание, что ed не дает ответа на команду замены. Чтобы проверить, что команда выполнилась успешно, выполните команду "p" или "n" как часть командной строки замены. .lin В следующем примере команда "n" используется для проверки того, что слово "file" заменит слово "toad".

Пример.

        .p<CR>
        This is a last toad
        s/toad/file/n<CR>
        1        This is a last file 

Чтобы заменить текст в строке, отличной от текущей, укажите номер строки.

Например, на следующем экране командная строка включает номер строки, которая будет изменена (строка 1), т.к. текущей является строка 3.

Пример.

        1, 3p<CR>
        This is a past toad
        testing testing
        come in toad
        .<CR>
        come in toad
        1s/past/test<CR>
        This is a test toad 

Как вы видите, ed напечатал последнюю строку автоматически после изменения, т.к. последний ограничитель опущен.

Наиболее универсальным средством ed является глобальная замена. Поместив команду "g" после последнего ограничителя в командной строке замены, вы сможете заменить каждое появление шаблона в каждой указанной строке. Заменим строку "es" на "ES":

        u<CR>
        1, $p<CR>
        This is a last toad
        testing testing
        come in toad
        testing 1, 2, 3
        1, $s/es/ES/g<CR>
        This is a last toad
        tESting tESting
        come in toad
        tESting 1, 2, 3

Другой способ - это использование глобального шаблона для поиска вместо указания границ строк:

        u<CR>
        1, $p<CR>
        This is a test toad
        testing testing
        come in toad
        testing 1, 2, 3
        g/test/s/es/ES/g<CR>
        1, 3p<CR>
        This is a tESt toad
        tESting tESting
        come in toad
        tESting 1, 2, 3
Рассмотрим следующие шаблоны:
     /шаблон<CR>
     ?шаблон<CR>
     v/шаблон<CR>

В следующем примере формат поиска v/шаблон используется для нахождения строк, которые не содержат шаблон "testing". Затем команда "s" используется для замены шаблона "in" на шаблон "out" в этих строках:

        v/testing/s/in/out<CR>
        This is a test toad
        come out toad 

Назад | Содержание | Вперед

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...