join

Объединение отсортированных файлов (POSIX)

Синтаксис:

join [-1 n] [-2 n] [-a номер_файла] [-e строка] [-j номер_файла n] [-o список] [-t символ] [-v номер_файла] файл1 файл2

Опции:

-1 n
(Единица.) Объединить по n-ному полю файла, указанного в аргументе файл1. Нумерация полей начинается с 1.
-2 n
Объединить по n-ному полю файла, указанного в аргументе файл2. Нумерация полей начинается с 1.
-a номер_файла
В дополнение к выходным данным по умолчанию вывести строку для каждой непарной строки в файле с номером, указанным в аргументе номер_файла. Если указаны обе опции -a 1 и -a 2, будут выведены оба набора данных. При этом данные для -a 2 всегда выводятся в первую очередь.
-e строка
Заменить пустые поля в выходных данных строкой, указанной в аргументе строка.
-j номер_файла n
(Выходит из употребления.) Объединить по n-ному полю файла, указанного в аргументе номер_файла. Если значением аргумента номер_файла не является значение 1 или 2 (например, -j 0 3), в обоих файлах следует использовать n-ное поле. Нумерация полей начинается с 1. Вместо опции -j следует использовать опции -1 и -2.
-o список
Вывести данные, в которых в каждой строке содержатся поля, указанные в списке список. Для записей в списке список используется следующий формат: номер_файла.поле. Здесь значение аргумента поле определяет номер поля. В качестве разделителя между записями можно использовать пробел или запятую.

Выходные данные записываются только для строк с совпадающими полями объединения. Запись полей объединения, не входящих в список, не выполняется.
-t символ
Использовать указанный символ в качестве разделителя для входных и выходных данных. Учитывается каждый символ в строке. Если эта опция указана, то последовательность упорядочения должна совпадать с последовательностью, создаваемой при выполнении утилиты sort без опции -b.
-v номер_файла
Вместо выходных данных по умолчанию вывести строки только для каждой непарной строки в файле номер_файла.
файл1
файл2
Имена текстовых файлов. Если в качестве значения аргумента файл1 или файл2 указан символ -, используется стандартный поток ввода.


Note: Для опций -a, -j и -v используется аргумент номер_файла. Следует ввести 1 для файла файл1 или 2 для файла файл2.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, aarch64, mips, ppc, x86

Описание:

Утилита join формирует "результат соединения" двух отношений, определяемых строками файлов файл1 и файл2. Этот результат записывается в стандартный поток вывода.

Файлы файл1 и файл2 сравниваются по "полю объединения", находящемуся в обоих файлах. Для каждой пары строк в файлах файл1 и файл2, в которых есть идентичные поля объединения, утилита join выводит одну строку вывода. Обычно строка вывода состоит из поля объединения, за которым указывается остальная часть строки из файла файл1, а затем остальная часть строки из файла файл2. По умолчанию полем объединения является первое поле в каждой строке.

В файлах файл1 и файл2 должна быть выполнена сортировка по полям объединения в соответствии с последовательностью упорядочения по возрастанию (т.е. идентично последовательности, обеспечиваемой утилитой sort -b). В противном случае вывод данных о совпадении некоторых полей может быть невозможен. Следует отметить, что если указана опция -t, то последовательность упорядочения должна совпадать с последовательностью, создаваемой при выполнении утилиты sort без опции -b.

По умолчанию в качестве разделителей полей используются пробелы. В этом случае несколько последовательных разделителей полей рассматриваются как один разделитель, а разделители, указанные в начале строки, игнорируются. По умолчанию в качестве разделителя полей в выходных данных используется пробел.

Примеры:

Объединение файла паролей и файла групп с сопоставлением числового идентификатора группы и выводом имени входа в систему, имени группы и начального каталога. Предполагается, что файлы были отсортированы в соответствии с последовательностью упорядочения по полям идентификатора группы.

join -1 4 -2 3 -o 1.1 2.1 1.6 -t: /etc/passwd /etc/group

Возвращаемое значение:

0
Все входные файлы выведены успешно.
>0
Возникла ошибка.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино», POSIX

Тематические ссылки:

gawk, sort, uniq




Предыдущий раздел: Утилиты