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].
Примечания
[править | править код]- ↑ 1 2 join(1) — Linux man page Архивная копия от 1 ноября 2010 на Wayback Machine (англ.)
- ↑ Руководство по Unix Архивная копия от 4 марта 2016 на Wayback Machine (рус.)
См. также
[править | править код]Литература
[править | править код]- Shelley Powers. Unix Power Tools. — "O'Reilly Media, Inc.", 2003. — P. 417. — ISBN 978-0-596-00330-2.
Ссылки
[править | править код]join(1)
— страница справки man по пользовательским командам GNU/Linux (англ.) (см.: GNU Coreutils)join(1)
— страница справки man по пользовательским командам Darwin и Mac OS X (англ.)join(1)
— страница справки man по пользовательским командам FreeBSD (англ.)- join Examples of the unix join command (англ.)
Это заготовка статьи о программном обеспечении. Помогите Википедии, дополнив её. |
Для улучшения этой статьи желательно:
|