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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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




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

10.2 Встроенные переменные, которые передают информацию

Приведем алфавитный список переменных, которые awk устанавливает автоматически в определенных случаях для передачи информации вашей программе. Переменные, специфичные для awk, отмечены звездочкой, `*'.

ARGC ARGV

Аргументы командной строки, доступные awk-программам, хранятся в массиве с именем ARGV. ARGC есть число присутствующих аргументов командной строки. См. раздел 14.2 [Другие аргументы командной строки], стр. 165. В отличие от большинства массивов awk, ARGV индексируется от 0 до ARGC \Gamma 1.

Например:

$ awk 'BEGIN - ? for (i = 0; i ! ARGC; i++) ? print ARGV[i] ? ""'&
 inventory-shipped BBS-list
a awk
a inventory-shipped
a BBS-list

В этом примере ARGV[0] содержит "awk", ARGV[1] содержит "inventory-shipped", а ARGV[2] содержит "BBS-list". Значение ARGC есть три, на один больше чем индекс последнего элемента в ARGV, поскольку элементы нумеруются с нуля. Имена ARGC и ARGV, также как соглашение об индексации массива от 0 до ARGC \Gamma 1, взяты из метода языка Cи для доступа к элементам командной строки. См. раздел 10.3 [Использование ARGC и ARGV], стр. 120, для сведений о том, как awk использует эти переменные.

ARGIND *

Индекс в ARGV текущего обрабатываемого файла. Каждый раз, когда gawk открывает новый файл с данными для обработки, он устанавливает ARGIND на индекс имени этого файла в ARGV. Когда gawk обрабатывает входные файлы, выражение `FILENAME == ARGV[ARGIND]' всегда имеет значение true.

Эта переменная полезна при обработке файлов; она дает возможность узнать, как далеко программа продвинулась в списке файлов с данными и различать последовательные появления того же имени файла в командной строке. Поскольку вы можете изменять значение ARGIND в вашей awk-программе, gawk будет автоматически устанавливать ее на новое значение, когда открывается следующий файл. Эта переменная является расширением в gawk. В других реализациях awk или в gawk в режиме совместимости (см. раздел 14.1 [Параметр командной строки], стр. 161), ее нет.

ENVIRON

Вспомогательный массив, который содержит данные об окружении. Его индексы --- имена переменных окружения. Значения есть значения некоторых переменных окружения. Например, ENVIRON["HOME"] может быть `/home/arnold'. Изменения в этом массиве не влияют на окружение, передаваемое каким-нибудь программам, которые awk может породить через перенаправление или системными средствами. (Это может быть в будущих версиях gawk.)

Некоторые операционные системы могут не иметь переменных окружения. На таких системах массив ENVIRON пуст (кроме ENVIRON["AWKPATH"]).

ERRNO *

Если произойдет системный сбой или при перенаправлении для getline, во время чтения по getline, или во время операции close, то ERRNO будет содержать цепочку с описанием ошибки.

Эта переменная представляет расширение gawk. В других реализациях awk и в gawk в режиме совместимости (см. раздел 14.1 [Параметры командной строки], стр. 161) она отсутствует.

FILENAME

Это имя файла, который awk читает в настоящее время. Если никакие файлы с данными не указаны в командной строке, awk читает из стандартного ввода и FILENAME содержит "-". FILENAME изменяется каждый раз, когда читается новый файл (см. главу 5 [Чтение входных файлов], стр. 37). Внутри правила BEGIN значение FILENAME есть "", поскольку в это время еще нет обрабатываемых входных файлов (d.c.).

FNR

FNR есть номер текущей записи в текущем файле. FNR увеличивается каждый раз, когда читается новая запись (см. раздел 5.8 [Явный ввод по getline], стр. 53). Она инициализируется нулем каждый раз, когда начинается новый входной файл.

Некоторые ранние реализации Unix awk инициализировали FILENAME значением "-", даже если имеются файлы с данными для обработки. Такое поведение было неверным, и не надо но него полагаться в ваших программах.

NF

NF содержит количество полей в текущей входной записи. NF устанавливается каждый раз, когда читается новая запись, когда создается новое поле или когда меняется $0 (см. раздел 5.2 [Исследование полей], стр. 40).

NR

Это количество входных записей, которые awk обработала с начала выполнения программы (см. раздел 5.1 [Как ввод разделяется на записи], стр. 37). NR изменяется каждый раз, когда читается новая запись.

RLENGTH

RLENGTH есть длина подцепочки, выделенной функцией соответствия (match function) (см. раздел 12.3 [Встроенные функции для действий над цепочками], стр. 137). RLENGTH устанавливается при вызове функции соответствия. Ее значение есть длина выделенной цепочки или \Gamma 1, если соответствия не обнаружено.

RSTART

RSTART есть начальный индекс в символах подцепочки, найденной функцией соответствия (см. раздел 12.3 [Встроенные функции для операций над цепочками], стр. 137). RSTART устанавливается при вызове функции соответствия. Ее значение есть позиция цепочки, с которой начинается выделенная подцепочка, или 0, если соответствия нет.

RT *

RT устанавливается каждый раз, когда читается запись. Она содержит входной текст, который определен в RS, разделитель записей. Переменная есть расширение gawk. В других реализациях awk или в gawk в режиме совместимости (см. раздел 14.1 [Параметры командной строки], стр. 161), она не действует.

ЗАМЕЧАНИЕ о NR и FNR.

awk просто увеличивает обе эти переменные каждый раз при чтении записи, вместо присваивания им абсолютного значения количества прочтенных записей. Это значит, что ваша программа может изменять эти переменные, и их новые значения будут увеличиваться при чтении дальнейших записей (d.c.).

Например:

$ echo '1 ? 2 ? 3 ? 4' -- awk 'NR == 2 - NR = 17 "" ? - print NR ""'
a 1 a 17 a 18 a 19

До того, как FNR была добавлена к языку awk (см. раздел 17.1 [Главные изменения между V7 и SVR3.1], стр. 253), многие awk-програмы использовали это свойство для определения количества записей в файле, устанавливая NR на 0 при изменении FILENAME.

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



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





Copyright © 2005-2016 Project.Net.Ru