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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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




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

11. Массивы в awk

11.1 Введение в массивы

Язык awk обеспечивает одноразмерные массивы для хранения групп цепочек или чисел. Каждый массив awk должен иметь имя. Имена массивов имеют тот же синтаксис, что и имена переменных; каждое правильное имя переменной может быть также правильным именем массива. Но нельзя одно и то же имя использовать обоими способами (как массив и как переменную) в одной awk-программе.

Массивы в awk поверхностно сходны с массивами в других языках; но имеются и фундаментальные отличия. В awk не нужно указывать размер массива перед началом его использования. Кроме того, любое число или цепочка могут использоваться как индекс массива, а не только последовательные целые. В большинстве других языков нужно объявлять массив и указывать, сколько элементов, или компонент, он содержит.

В таких языках объявление отводит непрерывный блок памяти для указанного количества элементов. Индекс в массиве обычно обязан быть положительным целым; например, индекс ноль указывает первый элемент массива, который фактически хранится в начале блока памяти.

Индекс один указывает второй элемент, который располагается в памяти сразу после первого элемента, и т.д. Невозможно добавить больше элементов к массиву, потому что он имеет место только для объявленного количества элементов. (Некоторые языки допускают произвольные начальные и конечные индексы, например, `15 .. 27', но размер массива все равно фиксирован при его объявлении.) Непрерывный массив с четырьмя элементами: восемь, "foo", "" и 30: может выглядеть так:

8 "foo" "" 30 значения
0  1    2  3 индексы

Хранятся в памяти только значения; индексы неявно зависят от порядка значений. восемь есть значение с индексом ноль, потому что восемь появляется в позиции с нулем элементов перед ним. Массивы в awk не такие: они ассоциативны. Это значит, что каждый массив есть собрание пар: индекс и соответствующий ему элемент-значение:

Элемент 4 Значение 30
Элемент 2 Значение "foo"
Элемент 1 Значение 8
Элемент 3 Значение ""

Мы перечислили пары в случайном порядке, потому что их порядок безразличен. Одно из преимуществ ассоциативных массивов состоит в том, что новые пары можно добавлять в любой момент. Например, предположим, что мы добавляем к предыдущему массиву десятый элемент со значением "number ten". Результат получится такой:

Элемент 10 Значение "number ten"
Элемент 4 Значение 30
Элемент 2 Значение "foo"
Элемент 1 Значение 8
Элемент 3 Значение ""

Этот массив разрежен, так как некоторые индексы пропущены: имеются элементы 1-4 и 10, но нет элементов 5, 6, 7, 8 и 9.

Другое следствие ассоциативности массивов есть то, что индексы не обязаны быть положительными целыми. Любое число или даже цепочка может быть индексом. Например, вот массив, который переводит слова с английского на французский язык:

Элемент "dog" Значение "chien"
Элемент "cat" Значение "chat"
Элемент "one" значение "un"
Элемент 1 Значение "un"

Здесь мы решили переводить число один сразу и в произносимой и в числовой форме, иллюстрируя тот факт, что один массив может иметь и числа и цепочки в качестве индексов. (Но фактически индексы массивов всегда цепочки; Это в деталях обсуждается в разделе 11.7 [Использование чисел для индексов в массивах], стр. 129.)

Значение IGNORECASE никак не связано с индексацией массивов. Нужно употреблять точно те же самые строковые значения для выборки элементов из массива, которые использовались при его записи в массив.

Когда awk создает для вас массив, например, с помощью встроенной функции split, индексами этого массива становятся последовательные целые, начиная с единицы. (См. раздел 12.3 [Встроенные функции для действий с цепочками], стр. 137.)

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



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





Copyright © 2005-2016 Project.Net.Ru