JOIN(1) JOIN(1) НАЗВАНИЕ join - оператор реляционной базы данных СИНТАКСИС |join [-aномер_файла] [-eцепочка_символов] [-j[номер_файла] номер_поля] | [-o список] [-tсимвол] файл1 файл2 ОПИСАНИЕ Команда join выдает на стандартный вывод результат сое- динения двух отношений, задаваемых строками файла1 и файла2. Если вместо файла1 стоит -, то используется стандартный ввод. Отношения файл1 и файл2 должны быть отсортированы в возрастающем лексикографическом порядке [см. sort(1)], согласно кодировке ASCII, по полям соединения (обычно по первому полю в каждой строке). Результат операции составляют строки, по одной для каж- дой пары строк из отношений файл1 и файл2, которые име- ют одинаковые поля соединения. Обычно строка результата состоит из общего поля, затем остатка строки отношения файл1, затем остатка строки отношения файл2. Как правило, поля разделяются символами пробела, табу- ляции или перевода строки. В этом случае несколько пос- ледовательных разделителей интерпретируются как один и начальные разделители отбрасываются. Подразумеваемым разделителем при выводе информации является пробел. Допустимы следующие опции: -aномер_файла В дополнение к обычному выводу выдать строку для каждой непарной строки из файла с указанным номе- ром (1 или 2). -eцепочка_символов Заменить пустые поля вывода заданной цепочкой_сим- волов. -j[номер_файла] номер_поля Произвести соединение по указанному полю для файла с заданным номером. Если номер_файла опущен, ис пользовать указанное поле в обоих файлах. -o список Каждую строку вывода обрамлять полями, определен- ными в списке. Каждый элемент списка имеет вид номер_файла.номер_поля. -tсимвол Использовать символ в качестве разделителя. Каждое вхождение символа в строку значимо. Указанный сим- вол используется как разделитель и при вводе, и при выводе. ПРИМЕР Следующая командная строка выполняет соединение файла паролей и файла групп, сравнивая числовой идентификатор группы, и выдает входное имя, имя группы и основной ка- талог. Предполагается, что оба файла отсортированы в порядке возрастания идентификаторов групп. |join -j1 4 -j2 3 -o 1.1 2.1 1.6 -t: /etc/passwd \ | /etc/group СМ. ТАКЖЕ awk(1), comm(1), sort(1), uniq(1). СЮРПРИЗЫ В случае стандартных разделителей полей последователь ность упорядочения такая же, как в команде sort -b, то есть начальные пробелы игнорируются. Если задана опция -t, все символы являются значимыми. Соглашения команд join, sort(1), comm(1), uniq(1) и awk(1) совершенно различны. Если имя файла состоит из цифр, оно может провзаимодей- ствовать с опцией -o, стоящей непосредственно перед ар- гументами-файлами.