русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ЗАДАНИЯ


Дата добавления: 2015-07-09; просмотров: 472; Нарушение авторских прав


· Получите столбец из имен пользователей, находящийся в данный момент в се- ансе.

· Получите столбец, составленный из символов строк — имен файлов в те- кущем каталоге таким образом, чтобы были выведены символы с пятого до последнего.

 

 

Потоковый редактор sed

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

Потоковый редактор sed позволяет либо прочитать входной поток для обра- ботки из стандартного потока ввода, либо осуществить чтение текстового файла, заданного в качестве аргумента. Обработанный текст передается в стандартный поток вывода. Редактор sed работает с целыми строками текста.

Перед командами sed нужно указывать адреса строк, с которыми произво- дятся какие-либо действия. Адреса можно указывать следующими спосо- бами:

r номером строки;

r диапазоном строк с указанием первого и последнего номеров строк в диа- пазоне через запятую (например, команда sed '2,4d' удалит в потоке строки со второй по четвертую включительно). Можно указать диапазон до последней строки. Последняя строка обозначается символом доллара ($);

r с помощью регулярного выражения или, в простейшем случае, подстроки, которая должна находиться в адресуемых строках.

В примере 8.21 приведена команда, которая выведет список процессов, не связанных с какими-либо терминалами (их имена содержат подстроку tty), но не псевдотерминалами (например, pts/1). Команда sed здесь удаляет из потока все строки, в которых имеется подстрока tty. Искомая подстрока (ре- гулярное выражение), используемая для адресации удаляемых в потоке строк, должна быть задана в косых чертах.




 

Пример 8.21. Удаление строк по подстроке

 

$ ps -e | sed '/tty/d'

 

Эта команда (см. пример 8.21) выведет список процессов, либо не связанных с терминалами вообще, либо связанных с псевдотерминалами.

Наиболее часто используются следующие команды языка sed:

r d — удаление;

r p — вывод строки (от англ. print);

r s — замена искомой подстроки на заданную подстроку;

r i — вставка строки;

r a — добавление строки;

r c — изменение всей строки на заданную строку;

r q — выход без дальнейшей обработки и вывода строк;

r y — команда транслитерации символ в символ;

D = — команда печати номера строки.

Предположим, что требуется увидеть все строки учетных записей, начиная с первой и заканчивая строкой, в которой встречается строка daemon (при- мер 8.22).

 

Пример 8.22. Команда q редактора sed

 

$ sed /daemon/q /etc/passwd

root:x:0:0:System Administrator:/root:/bin/bash bin:x:1:1:bin:/:/dev/null daemon:x:2:2:daemon:/:/dev/null

 

Из примера 8.22 видно, что здесь была использована команда выхода q. Как только редактор sed встретил строку daemon, вывод был завершен.

Пример 8.23 демонстрирует, как sed применяется для замены подстрок. Необходимо в потоке, полученном из файла /etc/passwd, все вхождения bash заменить на zsh.

 

Пример 8.23. Замена строк с помощью sed

 

$ sed s/bash/zsh/ /etc/passwd


 

В примере 8.23 после команды s в косых чертах указана подстрока для поис- ка — bash. Далее указана подстрока замены — zsh.

В примере 8.24 приведен более сложный вариант замены подстрок в потоке. Требуется вывести содержание файла /etc/group (файл с информацией о группах пользователей и членстве в них) следующим образом:

r должны быть выведены только группы, включающие пользователя user1;

r все знаки двоеточия должны быть заменены символом подчеркивания.

 

Пример 8.24. Сложная команда sed

 

$ sed -n /user1/s/:/_/gp /etc/group adm_x_4_root,adm,daemon,user1 wheel_x_10_root,user1 users_x_100_user1

 

В примере 8.24 во входном потоке выбираются только строки, содержащие подстроку user1. Команда s заменяет все вхождения символа двоеточия в каждой такой строке на подчеркивание. После косой черты установлен мо- дификатор g. Именно он заставляет команду s заменить все вхождения иско- мой подстроки (двоеточия) на подстроку — заменитель (подчеркивание). Если бы он отсутствовал, то в каждой адресуемой строке был бы заменен только первый символ двоеточия. После модификатора g следует команда p. Эта команда печатает адресуемые строки, т. е. те, в которых здесь произве- дена замена. Использование команды p вынуждает добавить опцию -n ко- манды sed. Без этой опции sed выводит в stdout все входные строки. При этом были бы выведены все строки потока с дублированием обработанных строк.

Пример 8.25 демонстрирует, как можно выделить требуемые строки в потоке, вставив перед ними заданную строку (например, строку-разделитель). Итак, требуется получить список всех последних входов в систему пользователя user1 так, чтобы после каждой строки, где упоминается этот пользователь, выводилась строка решеток.

 

Пример 8.25. Добавление строк с помощью sed

 

$ last | sed '/user1/a \

#####################'


 

В примере 8.25 конструкция /user1/a включает режим добавления ко всем строкам, в которых есть подстрока user1. Команда a заставляет sed добавить после каждой адресуемой строки содержимое нижестоящей строки в команде (здесь — решетки).

Пример 8.26 показывает файл сценария sed, выполняющего ту же задачу.

 

Пример 8.26. Сценарий sed

 

$ cat sed.scr

/user1/a \

#################

$ last | sed -f sed.scr

 

Содержимое файла sed.scr выведено командой cat. Последняя строка приме- ра показывает, что для указания sed имени файла сценария надо задавать оп- цию -f.

 



<== предыдущая лекция | следующая лекция ==>
ЗАДАНИЯ | ЗАДАНИЯ


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.