Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционная система UNIX.doc
Скачиваний:
94
Добавлен:
01.05.2014
Размер:
1.67 Mб
Скачать

6.16. Специальные символы

Некоторые символы имеют для редактора особое значение. К ним относятся: ".", "\", "$", "*", "[", "]", "^", "&". Эти символы обычно называются метасимволами.

6.16.1. Метасимвол . (точка)

В зависимости от контекста символ "." имеет несколько значений. lin В левой части команды подстановки и при поиске с помощью конструкции "/.../" символ "." означает любой одиночный символ. Таким образом, в результате поиска

/x.y/

будут найдены строки текста, содержащие символы "x" и "y", между которыми находится любой символ, например:

x+y

x-y

x y

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

Примеры.

.+1s/a/,/

замена символа "a" на символ "," в строке, следующей за текущей. Символ ".", записанный в правой части команды замены "s", не имеет специального значения;

1, 5s/,/./

замена символа "," на символ "." в строках с 1-й по 5-ю включительно.

Команда :

.s/././

иллюстрирует все значения символа ".". Первая "." в команде - это номер текущей строки, вторая "." это метасимвол, который соответствует любому одному символу данной строки, третья "." - это настоящая точка в команде замены.

Такая команда, примененная, например к строке:

ОШИБКА ЧТЕНИЯ.

дает результат:

ОШИБКА ЧТЕНИЯ.

6.16.2. Метасимвол \ (обратная дробная черта)

Обратная дробная черта (или обратный слэш) отменяет специальное значение, которое может иметь следующий за ней символ, в частности, "\." означает точку, а не "любой символ". Примеры.

s/\./?/

замена символа "." на символ "?";

/\.pp/

поиск строк, содержащих ".pp";

/\/

поиск символа "\";

/\//

поиск символа "/";

s/\\\.//

удаление в текущей строке последовательности символов ".".

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

//exec//sys.fort.go //etc ...

то можно использовать в качестве разделителей символ ":" (двоеточие). Удалить все символы дробной черты можно с помощью команды:

s:/::g

Если для стирания символов и удаления строк используются клавиши "#" и "@", их нужно вводить в виде "\#" и "\@" (это относится не только к работе с ed).

Если текст вводится с помощью одной из команд: "a", "i" или "c", то символ обратной дробной черты не является специальным, и требуется нажимать эту клавишу только один раз для каждой обратной дробной черты.

6.16.3. Метасимвол $ (денежный знак)

В зависимости от того, как используется знак денежной единицы ($), он может обозначать конец файла или конец строки. Когда указывается диапазон (от строки 1 до строки $), совершенно ясно, что речь идет о конце файла. "1, $p" вызовет распечатку всего файла. Но запись "s/$/./p" указывает, что точка будет помещена в конце текущей строки.

В команде:

$s/$/$

первый символ "$" означает последнюю строку файла, второй означает конец этой строки, а третий действительно является символом денежной единицы, который добавляется к указанной строке.

6.16.4. Метасимвол ^ (отрицание)

Метасимвол "^" применяется так же, как метасимвол "$", за исключением того, что он указывает начало строки, а не конец.

Примеры.

/^время/

поиск строки, начинающейся со слова "время";

s/^/ /

поместить пробел в начало текущей строки.

Метасимволы можно объединять. Например, для того, чтобы найти строку, содержащую только символы "pp" можно использовать команду: /^.pp$/

Соседние файлы в предмете Операционные системы