UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Заметьте, кстати, что введение символа
|
Используя средства этого раздела и файл
/usr/dict/words
Напишите программу подсчета слов на предпочитаемом вами языке программирования. Сравните ее размер, скорость и самодокументированность с соответствующим конвейером. Насколько легко вы можете преобразовать эту программу в программу проверки правильности написания текста?
4.3 Потоковый редактор
sed
Вернемся теперь к редактору
sed
ed
ed
sed
$ sed 'список команда ed' имена_файлов...
Читаются строки по одной из входных файлов; команды из списка применяются к каждой строке по одной в указанном порядке и результат редактирования записывается в стандартный выходной поток. Например, можно заменить в любом из указанных файлов
UNIX
UNIX (TM)
$ sed 's/UNIX/UNIX (TM)/g' имена_файлов...> выходной поток
Нужно правильно понимать действие команды. Она не изменяет содержимое своих входных файлов, а лишь пишет в стандартный выходной поток; исходные же файлы не изменяются. Вы уже достаточно разобрались в интерпретаторе, чтобы понять, что
$ sed '...' файл > файл
не лучшее решение: для замены содержимого файлов нужно задействовать временный файл или другую программу. В дальнейшем мы рассмотрим программу, реализующую задачу записи в существующий файл; обратитесь к команде
overwrite
Редактор
sed
p
sed
du -а
$ du -a ch4*
18 ch4.1
13 ch4.2
14 ch4.3
17 ch4.4
2 ch4.9
$
Можно использовать
sed
*
$ du -a ch4.* | sed 's/.*→//'
ch4.1
ch4.2
ch4.3
ch4.4
ch4.9
$
В команде замены удаляются все символы (
.*
→
$ who
lr tty1 Sep 29 07:14
ron tty3 Sep 29 10:31
you tty4 Sep 29 08:36
td tty5 Sep 29 08:47
$ who | sed 's/ .* / /'
lr 07:14
ron 10:31
you 08:36
td 08:47
$
Команда
s
Почти такую же команду
sed
getname
$ cat getname
who am i | sed 's/ .*//'
$ getname
you $
Другая команда
sed
ind
Реализовать команду
ind
$ sed 's/^/→/' $*
В этой версии символ табуляции вставляется даже в пустую строку, что не требуется. В лучшей версии используется возможность
sed
sed '/./s/^/→/' $*
Шаблон
/./
s
sed
Есть еще один способ определения команды
ind
'!'
sed '/^$/!s/^/→/' $*
шаблон
/^$/
/^$/!
Как уже отмечалось,
sed
ed
sed