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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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

11. Массивы в awk

11.5 Перебор всех элементов массива

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

for (var in array)
body

Этот цикл выполняет body один раз для каждого индекса в массиве, который ваша программа ранее использовала, с переменной var в качестве очередного индекса. Приведем программу, пользующуюся этой формой оператора for. Первое правило перебирает входные записи и отмечает, какие слова появились во вводе (по крайней мере один раз), помещая их в массив со словами в качестве индексов. Второе правило просматривает все найденные элементы массива used, использованные для нахождения всех отдельных слов во вводе. Оно печатает каждое слово длиннее 10 символов и количество таких слов. См. раздел 12.3 [Встроенные функции для действий с цепочками], стр. 137, для сведений о встроенной функции length.

# Записываем 1 для каждого слова, встретившегося хотя бы один раз -
for (i = 1; i != NF; i++)
used[$i] = 1 ""
# Находим количество отдельных слов длиннее 10 символов.
END -
for (x in used)
if (length(x) ? 10) -
++num.long.words print x "" print num.long.words, "слов длиннее чем&
 10 символов" ""

См. раздел 16.2.5 [Генерирование счетчиков, использующих слова], page 235, содержащий более подробный пример такого вида.

Порядок, в котором перебираются элементы массива в таких циклах, определяется внутренней организацией массивов и не может управляться или изменяться. Если новые элементы добавлять в массив операторами в теле такого цикла, это может привести к ошибкам; нельзя быть уверенным в том, что оператор цикла найдет их. Точно так же, изменение var внутри цикла может дать непредвиденные результаты. Необходимо избегать таких действий.

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



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





Copyright © 2005-2016 Project.Net.Ru