join

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

Синтаксис:

join [-1 n] [-2 n]

[-a номер_файла] [-e строка]

[-j номер_файла n]

[-o список] [-t символ] [-v номер_файла]

файл1 файл2

Поддерживаемые платформы:

Neutrino


Опции:

Для опций -a, -j и -v используется аргумент номер_файла. Следует ввести 1 для файла файл1 или 2 для файла файл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 указан символ -, используется стандартный поток ввода.

Описание:

Утилита 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

Возникла ошибка.