Наиболее общим способом подачи
ввода программе awk является
указание в командной строке имен
вводных файлов. Но существуют и
другие способы. Они описываются в
этом подразделе.
10.21.1. Файлы и каналы
Вы можете поместить вводимые
данные в файл, указать awkdata и затем
выполнить:
awk 'программа' awkdata
Если не указано имя файла, то awk
читает из стандартного файла ввода.
Например, egrep выбирает вводные
строки, содержащие указанное
регулярное выражение, которое
может сделать это быстрее, чем awk,
т.к. выполняет только это действие.
И мы можем вызвать кроме того канал:
egrep 'Asia' countries | awk '...'
egrep быстро находит строки,
содержащие "Asia" и затем
направляет их программе awk для
последующей обработки.
10.21.2. Разделители ввода
Если используется значение по
умолчанию для разделителей полей FS,
то поля вводного файла разделяются
символами пробела или табуляции и
лидирующие символы пробелов
отбрасываются, так что каждая из
этих строк имеет следующее первое
поле:
поле 1 поле 2
поле 1
поле 1
Если в качестве разделителя полей
используется символ табуляции, то
лидирующие пробелы не
отбрасываются.
Разделитель поля может быть
установлен при помощи регулярного
выражения при присваивоении
значения встроенной переменной FS.
Например:
BEGIN { FS = ",[\t] * | ([\t]+" }
переделывает разделитель поля
каждой строки в запятую и следующий
за ней символ новой строки или
табуляции, и каждую строку с
символами пустой строки или
табуляции без запятой. FS может быть
установлен в командной строке с
аргументом -F:
Пример.
awk -F ' (, [\t]*) | ([\t]+)' '...'
а выполняет те же действия, что и в
предыдущем примере.
Регулярные выражения
используются как разделители поля
для поиска самых длинных строк (как
в sub()), но не нулевых строк.
|