П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 176991 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 74153 раз(а).

Учебник HTML.
Просмотров 73323 раз(а).

Руководство по PHP5.
Просмотров 44203 раз(а).

Хостинг через призму DNS.
Просмотров 50902 раз(а).

Подборка текстов стандартных документов.
Просмотров 44377 раз(а).

Учебник PHP - Самоучитель
Просмотров 50622 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 51039 раз(а).

Внешние атаки...
Просмотров 41355 раз(а).

Учебник PHP.
Просмотров 36576 раз(а).

SSI в примерах.
Просмотров 27445 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь




Руководство пользователя для GNU Awk

2. Начальные сведения об awk

2.5 Более сложный пример

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


ls -lg -- awk '$6 == "Nov" - sum += $5 ""
END - print sum ""'

Эта программа печатает общее количество байтов во всех файлах текущего каталога, которые в последний раз модифицировались в Ноябре (любого года). (В оболочке Си вам нужно напечатать двоеточие и затем обратный слеш в конце первой строки; в POSIX-подчиненной оболочке, такой как Bourne shell или Bash, GNU Bourne-Again shell пример можно печатать, как показано.)

Часть `ls -lg' этого примера есть системная команда, которая выдает список файлов в каталоге, включающий размеры файлов и даты их последнего изменения. Ее выход выглядит так:

-rw-r--r-- 1 arnold user 1933 Nov 7 13:05 Makefile
-rw-r--r-- 1 arnold user 10809 Nov 7 13:03 gawk.h
-rw-r--r-- 1 arnold user 983 Apr 13 12:14 gawk.tab.h
-rw-r--r-- 1 arnold user 31869 Jun 15 12:20 gawk.y
-rw-r--r-- 1 arnold user 22414 Nov 7 13:03 gawk1.c
-rw-r--r-- 1 arnold user 37455 Nov 7 13:03 gawk2.c
-rw-r--r-- 1 arnold user 27511 Dec 9 13:07 gawk3.c
-rw-r--r-- 1 arnold user 7989 Nov 7 13:03 gawk4.c

Первое поле содержит написанный красным допуск, второе поле содержит количество связей к файлу, третье идентифицирует владельца файла. Четвертое поле указывает группу файла, пятое содержит его размер в байтах. Шестое, седьмое и восьмое содержат соответственно месяц, день и время последней модификации файла. Наконец, девятое поле содержит имя файла.

`$6 == "Nov"' в нашей awk-программе есть выражение, которое проверяет, соответствует ли шестое поле выхода от `ls -lg' цепочке `Nov'. Каждый раз, когда строка имеет цепочку `Nov' своим шестым полем, выполняется действие `sum += $5'. Оно добавляет пятое поле (размер файла) к переменной sum. В результате, когда awk окончит чтение всех входных строк, sum будет содержать сумму всех длин файлов, строки которых соответствуют образцу. (Так будет, потому что все переменные awk автоматически инициализируются нулем.)

После того, как будет обработана последняя строка выхода от ls, выполняется правило END и печатается значение sum. В нашем примере это будет 80600. Использованная здесь более сложная awk-техника объясняется дальше (см. раздел 8.2 [Обзор действий], стр 102). Прежде чем переходить к более сложному awk-программированию, вы должны узнать, как awk обрабатывает ваш ввод и выдает ваш выход. Манипулируя полями и используя операторы печати, вы можете получать очень полезные и впечатляюще выглядящие отчеты.

Назад | Вперед
Содержание (общее) | Содержание раздела



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru