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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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





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