'\" te .\" Copyright 1989 AT&T .\" Copyright (c) 1992, X/Open Company Limited All Rights Reserved .\" Copyright (c) 2009, 2012, Oracle and/or its affiliates.All rights reserved. .\" Portions Copyright (c) 1982-2007 AT&T Knowledge Ventures .\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation.Original documentation from The Open Group can be obtained online at http://www.opengroup.org/bookstore/. .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation.In the following statement, the phrase "this text" refers to portions of the system documentation.Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group.In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document.The original Standard can be obtained online at http://www.opengroup.org/unix/online.html.This notice shall appear on any product containing this material. .TH join 1 "2012 年 5 月 7 日" "SunOS 5.11" "用户命令" .SH 名称 join \- 关系数据库运算符 .SH 用法概要 .LP .nf \fB/usr/bin/join\fR [\fB-a\fR \fIfilenumber\fR] [\fB-v\fR \fIfilenumber\fR] [\fB-1\fR \fIfieldnumber\fR] [\fB-2\fR \fIfieldnumber\fR] [\fB-o\fR \fIlist\fR] [\fB-e\fR \fIstring\fR][\fB-t\fR \fIchar\fR] \fIfile1\fR \fIfile2\fR .fi .LP .nf \fB/usr/bin/join\fR [\fB-a\fR \fIfilenumber\fR] [\fB-j\fR \fIfieldumber\fR] [\fB-j1\fR \fIfieldnumber\fR] [\fB-j2\fR \fIfieldnumber\fR] [\fB-o\fR \fIlist\fR] [\fB-e\fR \fIstring\fR][\fB-t\fR \fIchar\fR] \fIfile1\fR \fIfile2\fR .fi .SH 描述 .sp .LP \fBjoin\fR 会针对文件 \fIfile1\fR 和 \fIfile2\fR 执行等值联接操作,并将生成的联接后文件写入到标准输出。缺省情况下,字段由一个或多个空格和制表符分隔(且前导空格和/或制表符会被忽略)。可使用 \fB-t\fR 选项更改字段分隔符。 .sp .LP \fB联接\fR字段是每个文件中都有且据其比较文件的一个字段。缺省情况下,join 会针对 \fIfiles1\fR 和 \fIfiles2\fR 中具有相同联接字段的每对行,将一行内容写入到输出。缺省的输出行由联接字段、\fIfile1\fR 中的其他字段以及 \fIfile2\fR 中的其他字段构成,但可通过 \fB-o\fR 选项对此进行更改。可使用 \fB-a\fR 选项将不匹配的行添加到输出。可以使用 \fB-v\fR 选项来只输出不匹配的行。 .sp .LP 文件 \fIfile1\fR 和 \fIfile2\fR 中要据其联接的字段必须按照 sort \fB-b\fR 的整理序列进行排序,否则结果不确定。 .sp .LP 如果 \fIfile1\fR 或 \fIfile2\fR 为 \fB-\fR,则 join 将使用从当前位置开始的标准输入。 .SH 选项 .sp .LP 下列部分选项使用参数 \fIfilenumber\fR。此参数应当为 \fB1\fR 或 \fB2\fR,分别对应于 \fIfile1\fR 或 \fIfile2\fR。 .sp .ne 2 .mk .na \fB\fB-a\fR \fIfilenumber\fR\fR .ad .RS 19n .rt 除了正常输出外,还会针对 \fIfilenumber\fR 中无法配对的每个行生成一行,其中 \fIfilenumber\fR 是 \fB1\fR 或 \fB2\fR。如果同时指定了 \fB-a 1\fR 和 \fB-a 2\fR,则会输出无法配对的所有行。 .RE .sp .ne 2 .mk .na \fB\fB-e\fR \fIstring\fR\fR .ad .RS 19n .rt 使用字符串 \fIstring\fR 替换由选项 \fB-o\fR 所选的列表中的空输出字段。 .RE .sp .ne 2 .mk .na \fB\fB-j\fR \fIfieldnumber\fR\fR .ad .RS 19n .rt 等效于 \fB-1\fR \fIfieldnumber\fR \fB-2\fR\fIfieldnumber\fR。字段从 \fB1\fR 开始编号。 .RE .sp .ne 2 .mk .na \fB\fB-j1\fR \fIfieldnumber\fR\fR .ad .RS 19n .rt 等效于 \fB-1\fR \fIfieldnumber\fR。字段从 \fB1\fR 开始编号。 .RE .sp .ne 2 .mk .na \fB\fB-j2\fR \fIfieldnumber\fR\fR .ad .RS 19n .rt 等效于 \fB-2\fR \fIfieldnumber\fR。字段从 \fB1\fR 开始编号。 .RE .sp .ne 2 .mk .na \fB\fB-o\fR \fIlist\fR\fR .ad .RS 19n .rt 每个输出行都包含列表中指定的字段。如果列表所选的字段未出现在输入中,则会将其视为空输出字段。(请参见 \fB-e\fR 选项。)列表中每个元素的形式为 \fIfilenumber\fR.\fIfieldnumber \fR,或者为 \fB0\fR(表示\fB联接\fR字段)。除非特别要求,否则不会列显共有的字段。 .RE .sp .ne 2 .mk .na \fB\fB-t\fR \fIchar\fR\fR .ad .RS 19n .rt 使用字符 char 作为分隔符。行中出现的每个 \fIchar\fR 都有其意义。字符 \fIchar\fR 同时用作输入和输出的字段分隔符。指定了此选项时,整理条件应与未使用 \fB-b\fR 选项时的排序相同。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR \fIfilenumber\fR\fR .ad .RS 19n .rt 针对 \fIfilenumber\fR 中无法配对的每个行生成一行,而非生成缺省输出,其中 \fIfilenumber\fR 是 \fB1\fR 或 \fB2\fR。如果同时指定了 \fB-v 1\fR 和 \fB-v 2\fR,则会输出无法配对的所有行。 .RE .sp .ne 2 .mk .na \fB\fB-1\fR \fIfieldnumber\fR\fR .ad .RS 19n .rt 依据文件 \fB1\fR 的第 \fIfieldnumber\fR 个字段进行联接。字段是从 \fB1\fR 开始的十进制整数。 .RE .sp .ne 2 .mk .na \fB\fB-2\fR \fIfieldnumber\fR\fR .ad .RS 19n .rt 依据文件 \fB2\fR 的第 \fIfieldnumber\fR 个字段进行联接。字段是从 \fB1\fR 开始的十进制整数。 .RE .SH 操作数 .sp .LP 支持下列操作数: .sp .ne 2 .mk .na \fB\fIfile1\fR\fR .ad .RS 9n .rt 要联接的文件的路径名。如果 \fIfile1\fR 或 \fIfile2\fR 操作数是 \fB-\fR,则在其位置使用标准输入。 .RE .sp .ne 2 .mk .na \fB\fIfile2\fR\fR .ad .RS 9n .rt 要联接的文件的路径名。如果 \fIfile1\fR 或 \fIfile2\fR 操作数是 \fB-\fR,则在其位置使用标准输入。 .RE .sp .LP \fIfile1\fR 和 \fIfile2\fR 中的行必须根据要据其联接的字段(通常是每行中的第一个字段)按照 \fBLC_COLLATE\fR 确定的递增整理序列排序(请参见 \fBsort\fR(1))。 .SH 用法 .sp .LP 有关 \fBjoin\fR 遇到大于或等于 2 GB(2^31 字节)文件时行为的说明,请参见 \fBlargefile\fR(5)。 .SH 示例 .LP \fB示例 1 \fR联接 \fBpassword\fR 文件和 Group 文件 .sp .LP 以下命令行将联接口令文件和组文件,按数字组 ID 进行匹配,并输出登录名、组名和登录目录。它假定文件已依据组 ID 字段按 \fBASCII\fR 整理序列进行了排序。 .sp .in +2 .nf example% \fBjoin -j1 4-j2 3 -o 1.1 2.1 1.6 -t:/etc/passwd /etc/group\fR .fi .in -2 .sp .LP \fB示例 2 \fR使用 \fB-o\fR 选项 .sp .LP \fB-o\fR \fB0\fR 字段实际上会选择联接字段的联合。例如,对于文件 \fBphone\fR: .sp .in +2 .nf !Name Phone Number Don +1 123-456-7890 Hal +1 234-567-8901 Yasushi +2 345-678-9012 .fi .in -2 .sp .sp .LP 和文件 \fBfax\fR: .sp .in +2 .nf !Name Fax Number Don +1 123-456-7899 Keith +1 456-789-0122 Yasushi +2 345-678-9011 .fi .in -2 .sp .sp .LP 其中每个大片空白都意味着一个制表符,以下命令: .sp .in +2 .nf example% \fBjoin -t"\fItab\fR" -a 1 -a 2 -e '(unknown)' -o 0,1.2,2.2 phone fax\fR .fi .in -2 .sp .sp .LP 会生成 .sp .in +2 .nf !Name Phone Number Fax Number Don +1 123-456-7890 +1 123-456-7899 Hal +1 234-567-8901 (unknown Keith (unknown) +1 456-789-012 Yasushi +2 345-678-9012 +2 345-678-9011 .fi .in -2 .sp .SH 环境变量 .sp .LP 有关影响 \fBjoin\fR 执行的以下环境变量的说明,请参见 \fBenviron\fR(5):\fBLANG\fR、\fBLC_ALL\fR、\fBLC_CTYPE\fR、\fBLC_MESSAGES\fR、\fBLC_COLLATE\fR 和 \fBNLSPATH\fR。 .SH 退出状态 .sp .LP 将返回以下退出值: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 所有输入文件都已成功输出。 .RE .sp .ne 2 .mk .na \fB\fB>0\fR\fR .ad .RS 6n .rt 出现错误。 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型属性值 _ 可用性system/core-os _ CSIEnabled(已启用) _ 接口稳定性Committed(已确定) _ 标准请参见 \fBstandards\fR(5)。 .TE .SH 另请参见 .sp .LP \fBawk\fR(1)、\fBcomm\fR(1)、\fBsort\fR(1)、\fBuniq\fR(1)、\fBattributes\fR(5)、\fBenviron\fR(5)、\fBlargefile\fR(5)、\fBstandards\fR(5) .SH 附注 .sp .LP 使用缺省的字段分隔符时,整理序列为 \fBsort\fR \fB-\fR\fBb\fR 的整理序列;指定了 \fB-t\fR 时,序列是普通排序的序列。 .sp .LP \fBjoin\fR、\fBsort\fR、\fBcomm\fR、\fBuniq\fR 和 \fBawk\fR 命令的约定极不一致。