UNIX — универсальная среда программирования
UNIX — универсальная среда программирования читать книгу онлайн
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями
shell.
Для программистов-пользователей операционной системы UNIX.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
В качестве другого примера выполнения арифметических операций рассмотрим программу, подсчитывающую число страниц по 66 строк в каждой. Страницы получаются при прогоне несколько файлов через команду
pr
prpages
$ cat prpages
# prpages: подсчет числа страниц, выдаваемых pr
wc $* |
awk '!/total$/ { n += int(($1+55)/56) }
END { print n }'
$
Команда
pr
wc
total
int
$ wc ch4.*
753 3090 18129 ch4.1
612 2421 13242 ch4.2
637 2462 13455 ch4.3
802 2986 16904 ch4.4
50 213 1117 ch4.9
2854 11172 62847 total
$ prpages ch4.*
53
$
Для проверки этого результата запустим команды
pr
awk
$ pr ch4.* | awk 'END {print NR/66}'
53
$
Переменные программы
awk
s+=$1
x=="abc"
x>y
awk
В программе
awk
NR
FS
FILENAME | Имя текущего входного файла |
FS | Символ разделения полей (по умолчанию приняты пробел и символ табуляции) |
NF | Число полей входной строки |
NR | Число входных строк |
OFMT | Формат вывода чисел (по умолчанию принят %g printf(3y) |
OFS | Строка разделитель полей в выходном потоке (пробел по умолчанию) |
ORS | Строка-разделитель строк в выходном потоке (символ перевода строки по умолчанию) |
RS | Символ разделения входных строк (символ перевода строки по умолчанию) |
Таблица 4.3: Встроенные переменные awk
= += -= /= %= | Присваивание; v ор=expr v=v op (expr) |
|| | ИЛИ: expr1 || expr2 expr2 expr1 |
&& | И: expr1 && expr2 expr2 |
! | Отрицание значения выражения |
>>= <<= == != ~ !~ | Операция отношения; ! !~ |
пусто | Конкатенация строк |
+ - | Сложение, вычитание |
* / % | Умножение, деление, вычисление остатка |
++ -- | Увеличение, уменьшение (префиксное или постпрефиксное) |
Таблица 4.4: Операции, выполняемые awk
Наша проверка программы
prpages
При редактировании большого файла очень легко (судя по опыту) случайно создать копию соседнего слова, что практически никогда не происходит преднамеренно. Для устранения таких ошибок в семействе программ Writers Workbench (рабочий набор редактора) существует программа
double
awk