.\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Institute of Electrical and Electronics Engineers, Inc. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)join.1 8.3 (Berkeley) 4/28/95 .\" jpman %Id: join.1,v 1.2 1997/05/20 00:48:55 mutoh Stab % .\" .Dd April 28, 1995 .Dt JOIN 1 .Os .Sh 名称 .Nm join .Nd リレーショナルデータベースの操作 .Sh 書式 .Nm join .Oo .Fl a Ar file_number | Fl v Ar file_number .Oc .Op Fl e Ar string .Op Fl j Ar file_number field .Op Fl o Ar list .Bk -words .Ek .Op Fl t Ar char .Op Fl \&1 Ar field .Op Fl \&2 Ar field .Ar file1 .Ar file2 .Sh 解説 .Nm join は、指定されたファイルに対し ``equality join'' と呼ばれる、 各ファイルの同一の部分を結合する操作を施して結果を標準出力に出力します。 .Pp 比較は、それぞれのファイルの ``join field'' と呼ばれるフィールドで 行ないます。デフォルトでは、各行の最初のフィールドが使用されます。 .Ar file1 と .Ar file2 の中で、``join field'' が一致した行が組みとなり、1 行で出力されます。 ``join field'' 、 .Ar file1 のうちの残りのフィールド、その後、 .Ar file2 のうちの残りのフィールドが 1行になって出力されます。 .Pp フィールドの区切は、デフォルトではタブか空白文字です。複数のタブや空白 が繋っていても、1 つの区切とみなされ、読み込み時にこれらは無視されます。 出力時の各フィールドの区切は、デフォルトでは空白 1 文字です。 .Pp ファイルとフィールドの番号に関し、多くのオプションがあります。これらの 番号は常に、1 から始まります。すなわち、コマンドラインの最初のファイル はファイル番号 1 番であり、各行の最初のフィールドは、フィールド番号 1 番となります。 .Bl -tag -width Fl .It Fl a Ar file_number デフォルトの出力に加えて、 .Ar file_number で指定したファイルに関して、同一フィールドがなかった行を表示します。 ( .FL a の引数の前には空白を入れてはなりません; .Sx 互換性 の節を御覧ください。) .It Fl e Ar string 出力時に、空のフィールドがあれば .Ar string で指定した文字列に置き換えます。 .It Fl o Ar list .Nm join の処理して出力すべき行に関し、デフォルトの順序でなく、 .Ar list で指定した順序で各ファイルの各フィールドを出力 するようにします。 .Ar list の各要素は、 .Ql file_number.field で表わし、要素間は、コンマ (``,'') か空白で区切ります (空白で区切る場合は、シェルが要素を別々のパラメータに分解しないよう クォーティングするか、複数の .Fl o オプションを使用します)。 .It Fl t Ar char 入力および出力に使用するフィールドの区切として .Ar char で指定した文字を使用するようにします。 1行の中で出現したすべての .Ar char が有効です。 .It Fl v Ar file_number .Ar file_number で指定したファイル番号のファイルに関して、 join 処理で同一フィールドが見つからなかった行だけを表示する ようにします。 .Fl v Ar 1 と .Fl v Ar 2 を同時に指定してもかまいません。 .It Fl 1 Ar field ファイル1の ``join field'' を .Ar field で指定した番号のフィールドとします。 .It Fl 2 Ar field ファイル2 の ``join field'' を .Ar field で指定した番号のフィールドとします。 .El .Pp デフォルトのフィールド区切り文字が使われた場合、 ファイルが結合される順序は .Xr sort 1 , に .Fl b オプションを付けたものと同様になるはずです。 逆に、 .Nm join .Fl t オプションによって、フィールド区切り文字が指定されている場合、 フィールドの照合順序は .Xr sort 1 で .Fl b オプションを指定しない場合と同じになるはずです。 .Pp .Ar file1 または .Ar file2 のうちの片方が ``-'' であった場合には、標準入力が使われます。 .Pp .Nm join は、実行に成功した場合に0を返し、エラーが発生した場合には0より大きな 値を返します。 .Sh 互換性 さらに、古いバージョンのjoinとの互換のため、次のオプションも使用できます。 .Bl -tag -width Fl .It Fl a デフォルトの出力に加え、file1 と file2 の各々で、同一フィールド がない行を表示します。 (これと .Fl a Ar file_number を区別するために、 .Nm join は現在後者は空白を含まないことを必要としています。) .It Fl j1 Ar field ファイル1の ``join field'' を .Ar field で指定した番号のフィールドとします。 .It Fl j2 Ar field ファイル2の ``join field'' を .Ar field で指定した番号のフィールドとします。 .It Fl j Ar field file1 と file2 の ``join field'' を .Ar field で指定した番号のフィールドとします。 .It Fl o Ar list ... 歴史的な .Nm join の実装では .Fl o オプションに複数の引数を許可していました。 これらの引数は、現在の .Fl o オプションで説明したものと同じ``file_number.field_number''とい う形式でした。 しかし、この方法では``1.2''と名付けられたファイルが存在すると、明 らかに困難を生じます。 .El .Pp これらのオプションは、修正をしたくないような非常に古いシェルスクリプト のためだけに用意されています。 これらのオプションは、使うべきではありません。 .Sh 規格 .Nm join コマンドは .St -p1003.2 互換です。 .Sh 関連項目 .Xr awk 1 , .Xr comm 1 , .Xr paste 1 , .Xr sort 1 , .Xr uniq 1