join (Unix)

join is a command in Unix and Unix-like operating systems that merges the lines of two sorted text files based on the presence of a common field. It is similar to the join operator used in relational databases but operating on text files.

join
Original author(s)Douglas McIlroy
Developer(s)AT&T Bell Laboratories
Initial releaseJanuary 1979 (1979-01)
Operating systemUnix, Unix-like, Plan 9
TypeCommand
Licensecoreutils: GPLv3+

Overview

The join command takes as input two text files and a number of options. If no command-line argument is given, this command looks for a pair of lines from the two files having the same first field (a sequence of characters that are different from space), and outputs a line composed of the first field followed by the rest of the two lines.

The program arguments specify which character to be used in place of space to separate the fields of the line, which field to use when looking for matching lines, and whether to output lines that do not match. The output can be stored to another file rather than printing using redirection.

As an example, the two following files list the known fathers and the mothers of some people. Both files have been sorted on the join field — this is a requirement of the program.

george jim
kumar gunaware
albert martha
george sophie

The join of these two files (with no argument) would produce:

george jim sophie

Indeed, only "george" is common as a first word of both files.

History

join is intended to be a relation database operator. It is part of the X/Open Portability Guide since issue 2 of 1987. It was inherited into the first version of POSIX.1 and the Single Unix Specification.[1][2]

The version of join bundled in GNU coreutils was written by Mike Haertel.[3]

gollark: Even Arch uses it. Arch is *never* wrong.
gollark: But they have a better compression ratio!
gollark: Arch uses them for package compression now.
gollark: https://en.wikipedia.org/wiki/Zstandard
gollark: .tar.zst.

See also

References

  1. printf  Commands & Utilities Reference, The Single UNIX Specification, Issue 7 from The Open Group
  2. printf(1)  FreeBSD General Commands Manual
  3. join(1)  Linux General Commands Manual
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.