Брайан Керниган - UNIX — универсальная среда программирования
- Название:UNIX — универсальная среда программирования
- Автор:
- Жанр:
- Издательство:Финансы и статистика
- Год:1992
- Город:Москва
- ISBN:5-289-00253-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Брайан Керниган - UNIX — универсальная среда программирования краткое содержание
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями shell.
Для программистов-пользователей операционной системы UNIX.
UNIX — универсальная среда программирования - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
$ ed poem
! wc poemЗапуск wc без выхода из ed
8 46 263 poem
! Вернулись из команды
q Выход без w годится: не было исправлений
$
Строки файла нумеруются как 1, 2 … Вы можете печатать n-ю строку, дав команду npили просто номер n, и строки с mпо n, используя m,np. "Номером строки" $обозначается последняя строка, так что строки можно не считать.
1 |
Печатать первую строку; 1рто же самое |
$ |
Печатать последнюю строку; $pто же самое |
1,$p |
Печатать строки с первой по последнюю |
Печатать файл по одной строке проще всего; нажимая клавишу RETURN, вы можете вернуться на одну строку назад с помощью ' -'. Можно комбинировать номера строк с ' +' и ' -'.
$-2,$p |
Печатать последние три строки |
1,2+3p |
Печатать строки с первой по пятую |
Однако нельзя печатать после конца файла или в обратном порядке; команды типа $,$+1pи $,1pсчитаются незаконными.
Команда list 1выводит текст в формате с видимыми символами. Это удобно при поиске в файлах управляющих символов, при различении пробелов, табуляции и т.п. (см. visв гл. 7).
Как только размер начинает превышать две строки, становится неудобным печатать его весь целиком, чтобы отыскать нужную строку. Редактор edпредлагает способ поиска строк, совпадающих с некоторым образцом, шаблоном: /pattern/обнаруживает очередное вхождение pattern.
$ ed poem 263
/flea/Ищет очередную строку, содержащую flea
Great fleas have little fleas
/flea/Ищет еще одну
And little fleas have lesser fleas,
// Ищет следующую по тому же образцу
And the great fleas themselves, in turn,
?? Поиск в обратном направлении по тому же образцу
And little fleas have lesser fleas,
Редактор запоминает образец, применявшийся вами в последний раз, так что можно повторить поиск просто с помощью //. Для поиска в обратном направлении воспользуйтесь ?pattern?и ??.
Поиск с помощью /.../и ?...?циклический, т.е. продолжается в обратном направлении после достижения одного из концов текста:
$p Печатать последнюю строку ('p' необязательна)
and greater still, and so on.
/flea/Следующее flea вблизи начала
Great fleas have little fleas
?? От начала идет в обратном направлении
have greater fleas to go on;
Результатом поиска по образцу типа /flea/является номер строки, например 1 или $, который может использоваться в том же контексте, что и такие номера:
1,/flea/p |
Печатать от единицы до следующего flea |
?flea?+1,$p |
Печатать от предыдущего flea + 1до конца |
Текущая редактируемая строка. Редактор edотслеживает последнюю строку, с которой имели дело: печатали или вводили текст, читали из файла. Это текущая строка с именем ' .'. Каждая команда определенным образом влияет на текущую строку, обычно настраивая ее на ту, с которой она последний раз работала. Вы можете использовать текущую строку так же, как $или номер строки типа 1:
$ ed poem
263
. Печатает текущую строку; после чтения файла
это то же, что $
and greater still, and so on.
.-1,.pПечатает предыдущую строку и еще одну
While these again have greater still,
and greater still, and so on.
Выражения для номера строки могут быть сокращены:
| Сокращение | Эквивалент | Сокращение | Эквивалент |
|---|---|---|---|
-1 |
.-1 |
+ |
.+1 |
--или -2 |
.-2 |
++или +2 |
.+2 |
-n |
.-n |
+n |
.+n |
$- |
$-1 |
.3 |
.+3 |
Команда а(добавить) добавляет строки после определенной строки, команда d(удалить) вычеркивает строки, команда i(вставить) вставляет строки перед определенной строкой, команда с(заменить) заменяет строки, действуя как комбинация команд "удалить" и "вставить".
na |
Добавить текст после строки n |
ni |
Вставить текст перед строкой n |
m,nd |
Удалить строки с mпо n |
m,nc |
Заменить строки с mпо n |
Если номера строк не указаны, используется текущая строка. Новый текст для команд а, си iоканчивается строкой ' .'; точка, введенная в последней строке, оставляется. Текущая строка настраивается на следующую строку после последней удаленной, за исключением случая, когда удалена последняя строка, т.е. $.
0а |
Добавить текст в начало (то же, что 1i) |
dp |
Удалить текущую строку, печатать следующую (или последнюю, если $) |
.,$dp |
Удалить отсюда до конца, печатать новую последнюю |
1,$d |
Удалить все |
?pat?,.-1d |
Удалить от предыдущей, совпадающей с ' pat' до той, что перед текущей |
$dp |
Удалить последнюю строку, печатать новую последнюю |
$c |
Заменить последнюю строку ($а добавляет после последней строки) |
1,$c |
Заменить все строки |
Нет необходимости перепечатывать целую строку, если в ней нужно заменить лишь несколько символов. Команда подстановки sзаменяет одну последовательность символов другой:
s/old/new/ |
Заменить первую oldна newв текущей строке |
s/old/new/p |
Заменить первую oldна newи печатать строку |
s/old/new/g |
Заменить каждую oldна newв текущей строке |
s/old/new/gp |
Заменить каждую oldна newи печатать строку |
Заменяется только самое левое вхождение образца в строке, если не написана буква ' g'. Команда sвыводит измененную строку только в том случае, когда она оканчивается буквой 'p'. Фактически большинство команд edвыполняет свою работу "молча", но почти любая команда может быть завершена буквой pдля вывода результата.
Если подстановкой вы не добились того, что хотели, с помощью команды u (аннулировать) можно уничтожить последнюю подстановку. Текущая строка должна быть настроена на преобразованную строку:
u |
Аннулировать последнюю сделанную подстановку |
up |
Аннулировать последнюю подстановку и напечатать |
Как вам уже известно, командам pи dмогут предшествовать один или два номера, указывающие строки, на которые нужно воздействовать. Этот же принцип используется и для команды s.
Интервал:
Закладка: