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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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

10. Встроенные переменные

10.3 Использование ARGC и ARGV

В разделе 10.2 [Встроенные переменные, которые передают информацию], стр. 117, мы видели эту программу, описывающую информацию, содержащуюся в ARGC и ARGV:

$ 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] содержит "inventoryshipped", и ARGV[2] содержит "BBS-list". Заметим, что awk-программа не входит в ARGV. Другие специальные опции командной строки, вместе с их аргументами, также не входят. Это включает присваивания переменным, сделанным с параметром `-v' (см. раздел 14.1 [Параметры командной строки], стр. 161). Нормально присваивания переменным из командной строки рассматриваются как аргументы и показываются в массиве ARGV.

$ cat showargs.awk
a BEGIN -
a printf "A=%d, B=%d"n", A, B
a for (i = 0; i ! ARGC; i++)
a printf ""tARGV[%d] = %s"n", i, ARGV[i]
a ""
a END - printf "A=%d, B=%d"n", A, B "" $ awk -v A=1 -f showargs.awk B=2 /dev/null
a A=1, B=0
a ARGV[0] = awk
a ARGV[1] = B=2
a ARGV[2] = /dev/null
a A=1, B=2

Ваша программа может изменить ARGC и элементы ARGV. Каждый раз, когда awk достигает конец входного файла, она использует следующий элемент ARGV как имя следующего входного файла. Помещая туда разные цепочки, ваша программа может вмешаться в чтение файлов. Вы можете использовать "-" для представления стандартного ввода. Запоминая дополнительные элементы и продвигая ARGC, можно заставить ее читать дополнительные файлы. Если уменьшать значение ARGC, то будут исключены входные файлы из конца списка.

Запоминая где-нибудь старые значения ARGC, ваша программа может трактовать исключенные аргументы как нечто иное, чем имена файлов. Чтобы исключить файл из середины списка, запишите пустую цепочку ("") в ARGV на место имени файла. Игнорировать имена файлов, замененных пустой цепочкой, есть специальная особенность awk.

Можно также использовать оператор delete для удаления элементов из ARGV (см. раздел 11.6 [Оператор delete], стр. 128).

Все эти действия обычно производятся из правила BEGIN, до фактического начала обработки ввода. См. раздел 16.1.4 [Разделение большого файла на части], стр. 217, и раздел 16.1.5 [Дуплицирование результата в нескольких файлах], стр. 219, как пример разных путей удаления элементов из ARGV.

Следующий фрагмент обрабатывает ARGV, чтобы исследовать, а затем удалить параметры командной строки.

BEGIN -
for (i = 1; i ! ARGC; i++) -
if (ARGV[i] == "-v")
verbose = 1 else if (ARGV[i] == "-d")
debug = 1 else if (ARGV[i] ~ /^-?/) -
e = sprintf("%s: unrecognized option -- %c",
ARGV[0], substr(ARGV[i], 1, ,1)) print e ? "/dev/stderr" "" else
break delete ARGV[i] "" ""

Чтобы фактически перенести параметры в awk-программу, нужно закончить awk-параметры символами `--' и затем ввести ваши параметры, подобно следующему:


awk -f myprog -- -v -d file1 file2 ...

Это не необходимо : пока не указано `--posix', gawk по умолчанию кладет всякий неопознанный параметр в ARGV для использования awk-программой. Как только он увидит незнакомый параметр, gawk перестает искать другие параметры, которые он иначе мог бы распознать. Предыдущий пример с gawk был бы таким:


gawk -f myprog -d -v file1 file2 ...

Поскольку `-d' не есть правильный параметр gawk, последующее `-v' передается awk-программе.

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



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





Copyright © 2005-2016 Project.Net.Ru