- •Командный интерпретатор, внешние и внутренние команды, интерпретация командной строки.
- •2. Формат команды linux, ключи, параметры, ключи с параметрами, длинные и короткие ключи
- •Большинство команд Linux имеют следующую структуру:
- •7. Стандартные потоки, операторы перенаправления потоков, подстановка команд
- •Потоки ввода-вывода
- •8. Работа с текстовыми файлами - вывод, фильтрация, конвейеры
- •9. Параметры, подстановка параметров, позиционные параметры
- •Замена тильды
- •Подстановка значений параметров
- •12. Пользователи и группы, понятие владельца, группы-владельца, реальные и эффективные идентификаторы
- •13.Права на файлы, смена прав, биты suid и sticky
- •16. Циклы for in, генерация последовательностей
- •17. Работа со строками и столбцами, особенности и применение команд cut, awk, read, head, tail
- •10.1.1. Структура программы
- •10.1.2. Поля
10.1.1. Структура программы
Основной операцией awk является сканирование набора вводных строк (одну за другой) для поиска строк, которые соответствуют одному из набора шаблонов или условий, которые вы указали. Для каждого шаблона вы можете указать действие, это действие выполняется с каждой строкой, которая соответствует шаблону.
Структура awk:
шаблон {действие}
шаблон {действие}
Пример.
$ -"address" {print $2, $3}
В этом примере приведена типичная программа awk, состоящая из одного выражения шаблон-действие. Программа печатает второе и третье поля каждой вводной строки, в которой первое поле является "address".
Любой шаблон или действие в выражении шаблон-действие может быть опущен. Отсутствие части "действие" означает печать соответствующих шаблону строк. Отсутствие шаблона означает, что действие выполняется над каждой строкой.
Вы можете запустить awk двумя способами. Первый: вы можете задать командную строку:
awk 'шаблон-действие' [список вводных файлов] чтобы выполнить шаблон-действие в перечисленных вводных файлах. Например,
awk '{print $2, $3}' файл1 файл2
Обратите внимание, что выражение шаблон-действие заключено в одиночные кавычки. Это защищает символы типа $ от интерпретации командным языком shell и позволяет также программе обрабатывать более одной строки.
Если файлы не указаны в командной строке, awk читает из стандартного файла ввода. Стандартный файл ввода вы можете также указать с помощью "-". Например:
awk '{print $3, $4}' файл1 -
awk читает сначала из файл1 и затем из стандартного файла ввода. Если программа является большой по объему, то удобнее использовать следующий формат:
awk -f программа [список вводных файлов]
Например, следующая командная строка говорит, что нужно выбрать и выполнить myprogram, взяв ввод из файла file1:
awk -f myprogram file1
10.1.2. Поля
Обычно awk считывает одну строку или запись за один раз. Записью является последовательность символов, заканчивающаяся символом "новая строка". Затем awk разделяет каждую запись на поля. Поле не может быть пустой строкой и символом табуляции.
В качестве ввода для программы awk в этом разделе будем использовать файл countries, который содержит информацию о 10 странах. Каждая запись содержит имя страны, занимаемую площадь в квадратных километрах, ее население в миллионах и континент, на котором она находится. Пустое пространство между колонками является табуляцией при вводе.
USSR 8650 262 Asia
Canada 3852 24 North America
China 3692 866 Asia
USA 3615 219 North America
Brazil 3286 116 South America
Australia 2968 14 Australia
India 1269 637 Asia
Argentina 1072 26 South America
Sudan 968 19 Africa
Algeria 920 18 Africa
Этот файл данных удобен для обработки - смесь слов и цифр, разделенных на поля символами "пробел" и "табуляция".
Число полей в записи определяется полем разделителем. Поля обычно разделяются последовательностью пробелов и/или табуляцией, так что первая запись countries будет иметь 4 поля, вторая - 5 и т.д. Возможно установить разделитель поля точно на символ табуляции, так что каждая строка будет иметь 4 поля, и можно искать значение данных.
При описании по умолчанию будем использовать: поля разделяются табуляцией или пробелами; первое поле в строке обозначается $1, второе - $2 и т.д. Вводная запись обозначается $0.