Руководство пользователя для GNU Awk
14. Запуск awk
14.1 Параметры командной строки
Параметры начинаются с символа dash и состоят из одного символа. Длинные параметры в стиле GNU состоят из двух dash и ключевого слова. Ключевые слова могут сокращаться, если сокращение однозначно определяет параметр. Если параметр имеет аргумент, то немедленно за ключевым словом следует знак равенства (`=') и значение аргумента, или ключевое слово и аргумент разделяются знаками whitespace. Для краткости ниже мы ссылаемся только на традиционно короткие параметры; однако короткие и длинные параметры взаимозаменяемы во всех контекстах.
Каждый длинный параметр для gawk имеет соответствующий параметр в стиле POSIX. Параметры и их значения таковы:
-F fs --field-separator fs
Устанавливает в переменной FS значение fs (см. раздел 5.5 [Указание того, как разделяются поля], стр.44).
-f source-file --file source-file
Указывает, что awk-программа должна быть взята из входного файла (вместо первого аргумента, не являющегося параметром).
-v var=val --assign var=val
Присвоить переменной var значение val перед началом выполнения программы. Эти значения доступны внутри правил BEGIN (см. раздел 14.2 [Другие аргументы командной строки], стр. 165). Параметр
`-v' может установить только одну переменную, но его можно использовать много раз, каждый раз с новой переменной, подобно следующему:
`awk -v foo=1 -v bar=2 ...'.
-mf NNN -mr NNN Устанавливает различные пределы памяти для значения NNN. Флажок `f' устанавливает максимальное число полей, а флажок `r' устанавливает максимальный размер записи. Эти два флажка и параметр `-m' взяты из версии Bell Labs research для Unix awk. Они нужны для совместимости, поскольку gawk не имеет предопределенных лимитов.
-W gawk-opt
Согласно стандарту POSIX параметры, которые представляют особенность реализации, добавляются в качестве аргументов параметра `-W'. Эти параметры также имеют соответствующие стилю GNU длинные параметры. См. ниже.
-- означает конец параметров командной строки. Следующие за этим аргументы не считаются параметрами даже если они начинаются с `-'. Такая интерпретация пары `--' определена стандартом POSIX. Это полезно, если имеются файлы с именами, начинающимися с `-', или в сценариях оболочки, если вы имеете имена файлов, указываемых пользователем, который может начинать их с `-'.
Доступны следующие специфичные для gawk параметры: -W traditional
-W compat --traditional
--compat определяет режим совместимости, в котором все расширения GNU языка awk недействительны и gawk ведет себя подобно версии Bell Labs research для Unix awk. `--traditional' есть предпочтительная форма этого параметра. См. раздел 17.5 [Расширения в gawk, отсутствующие в POSIX awk], стр. 256, где делается обзор расширений. Также см. раздел C.1 [Совместимость вниз и отладка], стр. 295.
-W copyleft -W copyright --copyleft --copyright
Печатают короткие версии General Public License и затем прекращают работу. Эти параметры могут быть убраны из будущих версий gawk.
-W help -W usage --help --usage
Печатают сообщение "usage" с обзором коротких и длинных форм параметров, которые принимает gawk и затем производят exit.
-W lint --lint
Предупреждают о конструкциях, которые сомнительны или непереносимы на другие реализации. Некоторые предостережения выдаются, когда gawk вначале читает программу. Другие выдаются при ее исполнении.
-W lint-old --lint-old
Предупреждает о конструкциях, которые недоступны в оригинальной версии 7 Unix awk (см. раздел 17.1 [Главные различия между V7 и SVR3.1], стр. 253).
-W posix --posix
Действия строго в режиме POSIX. Отменяет все расширения gawk (подобно `--traditional'), и добавляет дополнительно следующие ограничения:
Управляющие последовательности "x не распознаются (см. раздел 4.2 [управляющие последовательности], стр. 24).
Newlines не действуют как whitespace для разделения полей, когда FS равна одному пробелу.
Синоним func для ключевого слова function не распознается (см. раздел 13.1 [Синтаксис определения функции], стр. 153).
Операторы `**' и `**=' нельзя употреблять вместо `^' и `^=' (см. раздел 7.5 [Арифметические операторы], стр. 82, а также раздел 7.7 [Выражения присваивания], стр. 84).
Указание `-Ft' в командной строке не устанавливает значение FS на один символ tab (см. раздел 5.5 [Указания как разделять поля], стр. 44).
Встроенная функция fflush не действует (см. раздел 12.4 [Встроенные функции для ввода/вывода], стр. 146).
Если в командной строке указаны и `--traditional' и `--posix', то будет действовать режим `--posix'. gawk также выдаст сообщение, если присутствуют оба параметра.
-W re-interval --re-interval
Допускает интервальные выражения (см. раздел 4.3 [Операторы регулярных выражений], стр. 26), в регулярных выражениях. Так как интервальные выражения традиционно недоступны в awk, gawk по умолчанию не допускает их. Это предотвращает прерывания старых awk-программ.
-W source program-text --source program-text
Исходный программный код извлекается из текста программы. Этот параметр позволяет смешивать исходный код в файлах с исходным кодом, который вы пишите в командной строке. Это особенно полезно, когда вы имеете библиотечные функции, которые хотите использовать из программ в командной строке (см. раздел 14.3 [Переменная окружения AWKPATH], стр. 166).
-W version --version
Печатает информацию о версии используемой копии gawk. Это позволяет определить, является ли ваша копия gawk последней по отношению к тем, которые распространяет Free Software Foundation. Это также полезно для ваших сообщений об обнаруженных ошибках (см. раздел B.7 [Сообщения о проблемах и ошибках], стр. 292).
Всякие другие параметры отмечаются как неправильные и игнорируются. В режиме совместимости, как специальный случай, если значение fs, устанавливаемое параметром `-F', есть `t', то FS устанавливается на символ tab (""t"). Это верно только при `--traditional'и неверно при `--posix' (см. раздел 5.5 [Указания о разделении полей], стр. 44).
Параметр `-f' может использоваться более одного раза в командной строке. Если это так, awk читает свою программу из всех названных файлов, так, как если бы они были соединены в один большой файл. Это полезно для создания библиотек функций awk. Полезные функции могут быть написаны один раз и затем выбираться из стандартного места, вместо того, чтобы включаться в каждую индивидуальную программу.
Можно печатать программу на терминале и пользоваться библиотечными функциями, указывая `-f /dev/tty'. awk будет читать file с терминала для использования как часть awk-программы. Набрав свою программу, напечатайте Control-d (символ конца файла)для указания ее конца. (Можно также использовать `-f -' для чтения исходной программы с стандартного ввода, но тогда вы не будете в состоянии использовать стандартный ввод как источник данных.)
Вследствие того, что неудобно использовать стандартные механизмы awk для смеси входного файла и программ из командной строки, gawk предлагает параметр `--source'. Он не требует от вас преимущественного использования стандартного ввода для входной программы и позволяет легко смешивать входной код из командной строки с кодом из библиотеки (см. раздел 14.3 [Переменная окружения AWKPATH], стр. 166). Если не указаны ни `-f' ни `--source', то gawk будет использовать первый аргумент в командной строке, который не является параметром, как текст из входной программы.
Если имеется переменная окружения POSIXLY.CORRECT, то gawk будет действовать строго в режиме POSIX, как если бы был указан параметр командной строки `--posix'. Многие программы GNU ищут эту переменную окружения, включающую режим строгий режим POSIX. Если в командной строке указать `--lint' и gawk перейдет в режим POSIX по POSIXLY.CORRECT, то он напечатает предупреждение, указывающее, что задействован режим POSIX. Обычно эту переменную устанавливают в стартовом файле оболочки. В случае оболочки, совместимой с Bourne (такой как Bash), следует добавить эту строку к файлу `.profile' в вашем начальном каталоге:
POSIXLY.CORRECT=true export POSIXLY.CORRECT
В случае оболочки, совместимой с csh, *1* следует добавить такую строку к файлу `.login' в вашем начальном каталоге:
setenv POSIXLY.CORRECT true
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|