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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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



Вся правда о ягодах годжи.


Руководство пользователя для 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