こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

unixのコマンドでSQLのようにJOINする

unixのコマンドでSQLのJOIN(直積)と同じことをする方法はありますか?
やりたいのは同じ結合キーが複数行ある場合です。

入力ファイル1(結合キーは1列目)
1,AAA
2,BBB
2,CCC
3,DDD

入力ファイル2(結合キーは1列目)
1,PPP
2,QQQ
2,RRR

出力結果
1,AAA,PPP
2,BBB,QQQ
2,BBB,RRR
2,CCC,QQQ
2,CCC,RRR

結合キー「2」は入力ファイル1にも入力ファイル2にも2行づつ存在するので
SQLのJOINと同じように組み合わせのパターン全部を出力し、
結合キー「3」は入力ファイル2には存在しないので出力したくありません。

もし簡単なコマンドがなければawkやperlを使うしかないでしょうか・・・。

環境はHitachi系のunixだったと思います(うろ覚え)

ちなみにこういう質問はこのカテゴリ(Linux系OS)で合ってますでしょうか。プログラミングと迷ったのですが・・・。

投稿日時 - 2013-01-10 01:41:43

QNo.7884270

暇なときに回答ください

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

joinというコマンドが有りますけど
Linux, OSXともに
join -t, data1.txt data2.txt

1,AAA,PPP
2,BBB,QQQ
2,BBB,RRR
2,CCC,QQQ
2,CCC,RRR
と出力されます。

投稿日時 - 2013-01-10 15:30:17

ANo.3

標準では聞いた事がない。
使ったことはないが一応はPerlのスクリプトとして
http://www.vector.co.jp/soft/unix/business/se182749.html
こういう物は存在しているから使えるか試した方がいい。


>ちなみにこういう質問はこのカテゴリ(Linux系OS)で合ってますでしょうか。プログラミングと迷ったのですが・・・。
質問するなら
http://oshiete.goo.ne.jp/category/516/
こっちのカテゴリだろ。

投稿日時 - 2013-01-10 15:19:23

ANo.2

そういうコマンドは聞いたことがないですね。

で、昔はVzのBLOCK.DEF、今はKDEのテキストエディターKateで
矩形領域のコピーで整形したりしています。


私は、自分のコーディングが非常に不安なので
バグでファイルを壊したりするよりは、手間がかかるほうがましなので
ほとんど、代入も条件分岐もしないスクリプトしか書かないんです(苦笑)

アルゴリズム的にはわかっている処理でも
矩形領域ペーストで処理リストを作ったり
正規表現による置換を行なう程度で
最終的に、単なるシーケンス処理を目視確認して使っています。


状況によっては、表計算に貼りつけたあと
CSVで保存して、区切りを削除でも済みますけど、やったことはありません。

CPU性能的には、ネットブックでもGnumericなら実用的だと思いますが
ネットブックの狭い画面で、いくつものデータをつなぎ合わせるなら
テキストエディターでの矩形領域ペーストはかなり使いづらくなると思います。


一番いいのは、そういうプログラムかスクリプトを作って
OSSライセンスで公開することなんじゃないかとも思います。

これは1990年代のパソ通で広まった、言いだしっぺの法則というものです (^_^)


でも、何行まで想定すべきか?一行何文字まで対応すべきか?3bytes文字をどうするか?
異なる文字コードへの対応,3種の改行コードへの対応,区切り文字を含むデータの扱い…
公開するレベルのものを作るには、すごく手間がかかりそうな気がします。

…だから無いのか…
あるいは、単にDBCS非対応のために、日本で知られていないだけなのかもしれません。

投稿日時 - 2013-01-10 11:13:09

ANo.1

私の知る限りでは質問されているようなことを実現する標準的なコマンドは存在しないですね。
質問文にもあるとおり、awkやperlで書くのが手っ取り早いと思います。

> こういう質問はこのカテゴリ(Linux系OS)で合ってますでしょうか

まぁ、間違っては居ないと思います。
日立系でUnixというとAIXと思われるので、Solaris、BSD、Linuxのどれにも該当するしどれにも該当しないと言えるんで微妙っちゃ微妙ですけど(笑)

投稿日時 - 2013-01-10 02:21:33

あなたにオススメの質問