JOIN(1) Справочник основных команд FreeBSD JOIN(1)
НАЗВАНИЕ
join -- оператор соединения в реляционных базах данных
СИНТАКСИС
join [-a номер_файла | -v номер_файла] [-e строка] [-o список]
[-t символ] [-1 номер_поля] [-2 номер_поля] файл1 файл2
ОПИСАНИЕ
Утилита join выполняет так называемое ``соединение по равенству'' указан-
ных файлов и пишет результат в стандартный вывод. ``Поле соединения'' --
это поле внутри каждого файла, по которому они сравниваются. По умолча-
нию используется первое поле каждой строки. Для каждой пары строк из
файлов файл1 и файл2 с одинаковыми полями соединения выводится одна
строка. Каждая выводимая строка состоит из поля соединения, остальных
полей из файла файл1 и остальных полей из файла файл2.
Разделителями полей по умолчанию служат символы пробела и табуляции. В
этом случае несколько идущих подряд пробелов и табуляций считаются одним
разделителем, а пробелы и табуляции в начале строки игнорируются. Разде-
лителем полей на выходе по умолчанию является одиночный пробел.
Многие опции используют номера файлов и полей. Нумерация файлов и полей
начинается с единицы, т.е. первый файл в командной строке имеет номер 1,
и первое поле также имеет номер 1. Имеются следующие опции:
-a номер_файла
В дополнение к обычному выводу, вывести строки файла номер_файла,
которым не нашлось соответствия в другом файле.
-e строка
Заменять пустые поля в выводимых строках значением аргумента
строка.
-o список
Указать поля строк исходных файлов, из которых формируются выво-
димые строки. Каждый элемент списка список должен быть представ-
лен либо в форме номер_файла.номер_поля, либо как `0' (ноль), что
означает поле соединения. Элементы списка должны быть разделены
либо запятыми (`,'), либо пробельными символами. (Во втором слу-
чае список следует взять в кавычки, чтобы предотвратить разбиение
его командной оболочкой на несколько аргументов, либо использо-
вать несколько опций -o.)
-t символ
Использовать указанный символ в качестве разделителя (как на
входе, так и на выходе). Учитывается каждое вхождение символа
символ в строку исходного файла.
-v номер_файла
Не выводить обычный результат соединения, а вместо этого вывести
строки файла номер_файла, которым не нашлось соответствия в дру-
гом файле. Можно одновременно использовать опции -v 1 и -v 2.
-1 номер_поля
Соединять по полю номер_поля файла файл1.
-2 номер_поля
Соединять по полю номер_поля файла файл2.
Если в качестве разделителя полей используются стандартные символы, то
соединяемые файлы должны быть предварительно отсортированы по полям
соединения так, как это делает sort(1) с опцией -b, иначе join может не
найти все совпадающие поля. Если символы разделителя заданы опцией -t,
строки должны быть отсортированы так, как это делает sort(1) без опции
-b.
Если один из аргументов файл1 или файл2 задан как `-', для него будет
использоваться стандартный ввод.
СТАТУС ЗАВЕРШЕНИЯ
Утилита join возвращает 0 в случае успешного завершения и >0 в случае
возникновения ошибки.
СОВМЕСТИМОСТЬ
Для совместимости со старыми версиями join также имеются следующие опции:
-a В дополнение к обычному выводу, вывести строки обоих исходных
файлов, которым не нашлось соответствия в другом файле.
-j1 номер_поля
Соединять по полю номер_поля файла файл1.
-j2 номер_поля
Соединять по полю номер_поля файла файл2.
-j номер_поля
Соединять по полю номер_поля обоих файлов, файл1 и файл2.
-o список ...
Ранние реализации команды join допускали указание сразу несколь-
ких аргументов с опцией -o. Эти аргументы были в формате
номер_файла.номер_поля, как описано выше. Это создаёт очевидные
трудности при наличии файлов с именами вроде 1.2.
Эти опции не должны использоваться, и доступны лишь для того, чтобы ста-
рые командные сценарии продолжали работать и не требовали изменения.
СМОТРИ ТАКЖЕ
awk(1), comm(1), paste(1), sort(1), uniq(1)
СТАНДАРТЫ
Команда join соответствует стандарту IEEE Std 1003.1-2001 (``POSIX.1'').
FreeBSD 6.2 5 июля 2004 FreeBSD 6.2
Последние комментарии
11 недель 3 дня назад
35 недель 4 дня назад
2 года 36 недель назад
3 года 6 недель назад
3 года 29 недель назад
3 года 44 недели назад
3 года 45 недель назад
3 года 48 недель назад
4 года 7 недель назад
4 года 11 недель назад