.\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Institute of Electrical and Electronics Engineers, Inc. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)join.1 8.3 (Berkeley) 4/28/95 .\" %FreeBSD: src/usr.bin/join/join.1,v 1.21 2006/12/21 10:59:48 ru Exp % .\" $FreeBSDru: frdp/doc/ru_RU.KOI8-R/man/man1/join.1,v 1.2 2006/12/21 11:04:43 ru Exp $ .\" $FreeBSD$ .\" .Dd 5 июля 2004 .Dt JOIN 1 .Os .Sh НАЗВАНИЕ .Nm join .Nd оператор соединения в реляционных базах данных .Sh СИНТАКСИС .Nm .Oo .Fl a Ar номер_файла | Fl v Ar номер_файла .Oc .Op Fl e Ar строка .Op Fl o Ar список .Bk -words .Ek .Op Fl t Ar символ .Op Fl 1 Ar номер_поля .Op Fl 2 Ar номер_поля .Ar файл1 .Ar файл2 .Sh ОПИСАНИЕ Утилита .Nm выполняет так называемое .Dq соединение по равенству указанных файлов и пишет результат в стандартный вывод. .Dq Поле соединения \[em] это поле внутри каждого файла, по которому они сравниваются. По умолчанию используется первое поле каждой строки. Для каждой пары строк из файлов .Ar файл1 и .Ar файл2 с одинаковыми полями соединения выводится одна строка. Каждая выводимая строка состоит из поля соединения, остальных полей из файла .Ar файл1 и остальных полей из файла .Ar файл2 . .Pp Разделителями полей по умолчанию служат символы пробела и табуляции. В этом случае несколько идущих подряд пробелов и табуляций считаются одним разделителем, а пробелы и табуляции в начале строки игнорируются. Разделителем полей на выходе по умолчанию является одиночный пробел. .Pp Многие опции используют номера файлов и полей. Нумерация файлов и полей начинается с единицы, т.е. первый файл в командной строке имеет номер 1, и первое поле также имеет номер 1. Имеются следующие опции: .Bl -tag -width indent .It Fl a Ar номер_файла В дополнение к обычному выводу, вывести строки файла .Ar номер_файла , которым не нашлось соответствия в другом файле. .It Fl e Ar строка Заменять пустые поля в выводимых строках значением аргумента .Ar строка . .It Fl o Ar список Указать поля строк исходных файлов, из которых формируются выводимые строки. Каждый элемент списка .Ar список должен быть представлен либо в форме .Ar номер_файла . Ns Ar номер_поля , либо как .Ql 0 .Pq ноль , что означает поле соединения. Элементы списка должны быть разделены либо запятыми .Pq Ql \&, , либо пробельными символами. (Во втором случае .Ar список следует взять в кавычки, чтобы предотвратить разбиение его командной оболочкой на несколько аргументов, либо использовать несколько опций .Fl o . ) .It Fl t Ar символ Использовать указанный .Ar символ в качестве разделителя (как на входе, так и на выходе). Учитывается каждое вхождение символа .Ar символ в строку исходного файла. .It Fl v Ar номер_файла Не выводить обычный результат соединения, а вместо этого вывести строки файла .Ar номер_файла , которым не нашлось соответствия в другом файле. Можно одновременно использовать опции .Fl v Cm 1 и .Fl v Cm 2 . .It Fl 1 Ar номер_поля Соединять по полю .Ar номер_поля файла .Ar файл1 . .It Fl 2 Ar номер_поля Соединять по полю .Ar номер_поля файла .Ar файл2 . .El .Pp Если в качестве разделителя полей используются стандартные символы, то соединяемые файлы должны быть предварительно отсортированы по полям соединения так, как это делает .Xr sort 1 с опцией .Fl b , иначе .Nm может не найти все совпадающие поля. Если символы разделителя заданы опцией .Fl t , строки должны быть отсортированы так, как это делает .Xr sort 1 без опции .Fl b . .Pp Если один из аргументов .Ar файл1 или .Ar файл2 задан как .Sq Fl , для него будет использоваться стандартный ввод. .Sh СТАТУС ЗАВЕРШЕНИЯ .Ex -std .Sh СОВМЕСТИМОСТЬ Для совместимости со старыми версиями .Nm также имеются следующие опции: .Bl -tag -width indent .It Fl a В дополнение к обычному выводу, вывести строки обоих исходных файлов, которым не нашлось соответствия в другом файле. .It Fl j1 Ar номер_поля Соединять по полю .Ar номер_поля файла .Ar файл1 . .It Fl j2 Ar номер_поля Соединять по полю .Ar номер_поля файла .Ar файл2 . .It Fl j Ar номер_поля Соединять по полю .Ar номер_поля обоих файлов, .Ar файл1 и .Ar файл2 . .It Fl o Ar список ... Ранние реализации команды .Nm допускали указание сразу нескольких аргументов с опцией .Fl o . Эти аргументы были в формате .Ar номер_файла . Ns Ar номер_поля , как описано выше. Это создаёт очевидные трудности при наличии файлов с именами вроде .Pa 1.2 . .El .Pp Эти опции не должны использоваться, и доступны лишь для того, чтобы старые командные сценарии продолжали работать и не требовали изменения. .Sh СМОТРИ ТАКЖЕ .Xr awk 1 , .Xr comm 1 , .Xr paste 1 , .Xr sort 1 , .Xr uniq 1 .Sh СТАНДАРТЫ Команда .Nm соответствует стандарту .St -p1003.1-2001 .