JOIN(1) General Commands Manual JOIN(1)

# [NAME](#NAME)

join - For each pair of input lines with identical join fields, write a line to standard output. The default join field is the first, delimited by blanks.

When FILE1 or FILE2 (not both) is -, read standard input.

# [SYNOPSIS](#SYNOPSIS)

**join** \[OPTION]... FILE1 FILE2

# [DESCRIPTION](#DESCRIPTION)

For each pair of input lines with identical join fields, write a line to standard output. The default join field is the first, delimited by blanks.

When FILE1 or FILE2 (not both) is -, read standard input.

# [OPTIONS](#OPTIONS)

[**-a** *&lt;FILENUM&gt;*](#a)

also print unpairable lines from file FILENUM, where FILENUM is 1 or 2, corresponding to FILE1 or FILE2

*Possible values:*

- 1
- 2

[**-v** *&lt;FILENUM&gt;*](#v)

like -a FILENUM, but suppress joined output lines

*Possible values:*

- 1
- 2

[**-e** *&lt;EMPTY&gt;*](#e)

replace missing input fields with EMPTY

[**-i**, **--ignore-case**](#i)

ignore differences in case when comparing fields

[**-j** *&lt;FIELD&gt;*](#j)

equivalent to '-1 FIELD -2 FIELD'

[**-o** *&lt;FORMAT&gt;*](#o)

obey FORMAT while constructing output line

[**-t** *&lt;CHAR&gt;*](#t)

use CHAR as input and output field separator

**-1** *&lt;FIELD&gt;*

join on this FIELD of file 1

**-2** *&lt;FIELD&gt;*

join on this FIELD of file 2

[**--check-order**](#check)

check that the input is correctly sorted, even if all input lines are pairable

[**--nocheck-order**](#nocheck)

do not check that the input is correctly sorted

[**--header**](#header)

treat the first line in each file as field headers, print them without trying to pair them

[**-z**, **--zero-terminated**](#z)

line delimiter is NUL, not newline

[**-h**, **--help**](#h)

Print help

[**-V**, **--version**](#V)

Print version

# [VERSION](#VERSION)

v(uutils coreutils) 0.12.0

2026-10-12

---

Document: join(1) from uutils 0.12.0-r3 (Chainguard OS)
Source: https://github.com/uutils/coreutils
