join (Unix)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

join — команда UNIX-подобных операционных систем, объединяющая строки двух упорядоченных текстовых файлов на основе наличия общего поля. По своей функциональности схожа с оператором Join, используемого в языке SQL, но оперирует с текстовыми файлами. Данная утилита написана Майком Хертелем (англ. Mike Haertel).

Команда join принимает на входе два текстовых файла и некоторое число аргументов. Если не передаются никакие аргументы командной строки, то данная команда ищет пары строк в двух файлах, обладающие совпадающим первым полем (последовательностью символов, отличных от пробела), и выводит строку, состоящую из первого поля и содержимого обеих строк.

Аргументы программы определяют, какой символ будет использован вместо пробела для разделения полей строки, которые будут проверяться при поиске совпадающих строк, а также выводить несовпавшие строки или нет. Выводить данные можно в третий файл при помощи перенаправления.

Упрощенно синтаксис можно представить следующим образом:

join [параметры] файл1 файл2

Если в качестве одного из файлов указано «-» (но не обоих сразу!), то в этом случае вместо файла считывается стандартный ввод[1]. Файлы должны быть отсортированы в возрастающем лексикографическом порядке согласно кодировке ASCII, по полям соединения (обычно по первому полю в каждой строке). Результат операции составляют строки, по одной для каждой пары строк из отношений файл1 и файл2, которые имеют одинаковые поля соединения. Как правило, строка результата состоит из общего поля, затем остатка строки о��ношения файл1, затем остатка строки отношения файл2. По умолчанию разделителем при выводе информации является пробел. В случае стандартных разделителей полей последовательность упорядочения не учитывает начальные пробелы. Если задана опция -t, то все символы являются значимыми. Если имя файла состоит из цифр, оно может провзаимодействовать с опцией -o, стоящей непосредственно перед аргументами-файлами[2].

В качестве примера можно взять два нижеследующих файла.

Файл 1:

строка1 текст1
строка2 текст2

Файл 2:

строка1 текст11
строка3 текст3

Команда join (без переданных дополнительных параметров) выдаст следующий результат:

строка1 текст1 текст11

Это вызвано тем, что только слово «строка1» встретилось в обоих файлах в качестве первого слова строки.

Лицензия и распространение

[править | править код]

Данная программа находится в собственности Фонда свободного программного обеспечения и распространяется без каких-либо гарантий как свободное ПО по лицензии GNU General Public License[1].

Примечания

[править | править код]

Литература

[править | править код]
  • Shelley Powers. Unix Power Tools. — "O'Reilly Media, Inc.", 2003. — P. 417. — ISBN 978-0-596-00330-2.