русс | укр

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

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

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

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


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

ЗАДАНИЯ


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


· С помощью sed получите список только тех процессов, которые связаны с каким-либо терминалом (фильтр по строкам pts и tty).

· В полученном списке процессов с помощью sed замените все строки user

на provider.

 

 

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

Утилита awk, GNU-версия которой называется gawk, предназначена для пото- кового редактирования текста и обладает специализированным языком про- граммирования для обработки табулированных данных. Она исходно разра- батывалась, как генератор отчетов.

Сценарий для awk в общем виде выглядит, как показано в примере 8.27.

 

Пример 8.27. Общий вид сценария awk

 

BEGIN

Команды формирования заголовка отчета

/шаблон/ { команды обработки строк } END

Команды формирования завершения отчета


Сценарий awk может состоять из трех частей:

r команды формирования заголовка — следуют после BEGIN;

r команды основного цикла обработки строк заключаются в фигурные скобки;

r команды формирования завершения отчета — следуют после END.

Команды могут находиться в файле сценария, имя которого должно быть указано после опции -f, либо может быть задано в качестве аргумента awk. Если шаблон для команды не указан, то обработке подвергаются все стро- ки. Если же, наоборот, шаблон задан, а команда — нет, то в stdout выводят- ся только строки, подходящие шаблону. Например, следующая команда выведет из файла /etc/passwd все строки, содержащие подстроку bash (при- мер 8.28).

 

Пример 8.28. Вывод строк по шаблону с помощью awk

 

$ awk /bash/ /etc/passwd

root:x:0:0:System Administrator:/root:/bin/bash user1:x:500:100::/home/user1:/bin/bash

 

В этом случае не было команды, но был задан шаблон — строка bash.

Теперь выведем только имя пользователей, использующих bash, и их UID. Для этого необходимо вывести первое и третье поле этого файла. Утилита awk позволяет обращаться к полям строк, разделенных с помощью пробелов или табуляций, следующим образом: $0 — вся строка, $1 — первое поле,



$2 — второе и т. д.

В нашем случае разделителем полей является двоеточие, поэтому данный символ надо указать после опции -F (пример 8.29).

 

Пример 8.29. Вывод требуемых полей

 

$ awk -F: '/bash/{print $1,$3}' /etc/passwd root 0

user1 500

 

Вывод требуемых полей обеспечивает команда print.

Для вывода только тех пользователей, чьи UID больше 100, можно отказаться от шаблона и профильтровать строки по условию $3>100 (пример 8.30).


 

Пример 8.30. Фильтрация по числовому значению

 

$ awk -F: '$3>100{print $1,$3}' /etc/passwd user1 500

 

Язык awk обладает собственными заранее определенными переменными и разрешает пользователю определять свои переменные. Одной из наиболее часто используемых встроенных переменных является NR — номер строки в потоке. Так, в предыдущем примере перед именами пользователей можно вывести номера строк, считанных из файла /etc/passwd (пример 8.31).

 

Пример 8.31. Переменная NR редактора awk

 

$ awk -F: '$3>100{print NR,$1,$3}' /etc/passwd

48 user1 500

 

Пример 8.32 демонстрирует, как можно получить список только тех файлов, длина имен которых больше 15 символов.

 

Пример 8.32. Фильтрация строк по длине

 

$ ls | awk 'length($0)>15'

 

Функция length() языка awk позволяет проверять длину строк. В данном случае фильтруются только те строки, длина которых больше 15 символов.

 



<== предыдущая лекция | следующая лекция ==>
ЗАДАНИЯ | Сравнение файлов и каталогов


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


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

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

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


 


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

 
 

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

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