More than 1 year has passed since last update.


ここに書いてあること

便利なコマンドjoin使いかたのまとめ

バイオシェル芸では遺伝子発現データの結合などで使う


参考にした記事

こちらにほとんど書いてある。もしかしてシェル芸人...

joinコマンドで覚えておくと便利な使い方8個

こちらも。

joinコマンドが便利過ぎて生きるのが辛い


使いかた

1列目が遺伝子名, 2列目に発現量(何かの値)

結合したい列でsortしておく



$ cat inu.txt



geneA 100

geneB 110

geneC 120

geneE 130



$ cat neko.txt



geneA 200

geneB 210

geneD 220

geneF 230


inuとnekoで共通に発現している遺伝子

$ join -1 1 -2 1 inu.txt neko.txt

geneA 100 200

geneB 110 210

オプション-1 1 -2 1 は結合キーとなる列を指定

(1番目のファイルの1列目と2番目のファイルの1列目)

2つのファイルのどちらにも値がある行だけが出力される


全ての遺伝子の値

$ join -o '0,1.2,2.2' -a 1 -a 2 -e '-' inu.txt neko.txt

geneA 100 200

geneB 110 210

geneC 120 -

geneD - 220

geneE 130 -

geneF - 230

発現していない(値がない)遺伝子のところに-が入る

その他オプション

-o 'num,num.num,....' 表示する列を指定, 0は結合キーの列,n.nでn番目のファイルのn列目

-a num 指定したファイルの行は全部表示する

-e 'string' 値がないところを'string'で指定した文字で埋める


その他


  • -e 'string'でデータのないフィールドに何か文字を入れたいときは、-o オプションと一緒でないと(つまり出力フィールドを指定してやらないと)何も出てこない