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

О проекте

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

MySQL

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

Хостинг

Другое








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

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

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

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

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

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

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

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

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

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

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

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



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




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

5. Чтение входных файлов

5.5 Задание разделителей полей

5.5.4 Установка FS из командной строки

FS может быть установлена из командной строки. Для этого нужно использовать параметр `-F'.

 Например,

awk -F, 'program' input-files

устанавливает в FS символ `,'. Заметьте, что параметром служит заглавное `F'. В отличие от этого `-f' указывает, что файл содержит программу awk. Регистр имеет значение в параметрах командной строки: параметры `-F' и `-f' не имеют ничего общего. Их можно использовать одновременно для установки переменной FS и получения awk-программы из файла.

Значение, используемое в качестве аргумента для `-F', обрабатывается точно так же как при присваивании встроенной переменной FS. Это значит, что если разделитель поля содержит специальные символы, они должны быть указаны соответствующими управляющими последовательностями.

Например, чтобы
использовать  `"' как разделитель полей, нужно напечатать:

# что-нибудь такое как FS = """" awk -F"""" '...' files ...

Поскольку `"' используется в оболочке как кавычка, awk увидит `-F""'. Тогда awk обработает `""' как управляющую последовательность (см. раздел 4.2 [Управляющие последовательности], стр. 24), и получит в результате одну `"' в качестве разделителя полей.

В специальном случае, в режиме эмуляции (см. раздел 14.1 [Параметры командной строки], стр. 161), если аргумент при `-F' есть `t', то FS получит значение символа tab. Это произойдет потому, что при печати `-F"t' в оболочке, без всяких кавычек, `"' удаляется, так что awk предположит, что на самом деле вы хотите разделять поля символами tab, а не `t'. Употребляйте `-v FS="t"' в командной строке, если вы на самом деле хотите отделять поля буквой `t' (см. раздел 14.1 [Параметры командной строки], стр. 161).

Например, воспользуемся программным файлом awk с именем `baud.awk', который содержит образец /300/ и действие `print $1'. Вот эта программа:

/300/ - print $1 ""

Установим также в FS символ `-' и исполним программу для входного файла `BBS-list'. Следующая команда напечатает список имен досок объявлений, которые работают со скоростью 300 бод, и первые три цифры их телефонных номеров:

$ awk -F- -f baud.awk BBS-list
a aardvark 555
a alpo
a barfly 555...

Обратите внимание на вторую строку вывода. В оригинальном входном файле (см. раздел 1.3 [Файлы с данными для примеров], стр. 7), вторая строка выглядит так:

alpo-net 555-3412 2400/1200/300 A

Символ `-', часть системного имени, использован как разделитель полей вместо `-' в телефонном номере, как было задумано. Это показывает, почему надо быть осторожным в выборе полей и разделителей записей. На многих системах Unix каждый пользователь имеет отдельный вход в системном файле с паролями, одну строку на пользователя. Информация в строке разделена на части двоеточиями. Первое поле содержит регистрационное имя пользователя, второе есть его секретный пароль.

Строка этого файла может выглядеть подобно следующей:

arnold:xyzzy:2076:10:Arnold Robbins:/home/arnold:/bin/sh

Следующая программа просматривает системный файл с паролями и печатает входы пользователей, не имеющих пароля:

awk -F: '$2 == ""' /etc/passwd

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



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





Copyright © 2005-2016 Project.Net.Ru