Unixの列名でtxtファイルの列を選択する方法

Unixの列名でtxtファイルの列を選択する方法

約1000個の列を含む大きなファイルがあります。最初の2つの列は染色体とSNP(単一塩基多型)の位置であり、残りはサンプルです。最初の数行は次のとおりです。

#CHROM  POS    P0431    P432    P433    P434    P435
Chr01   180349  G   G   G   N   G
Chr01   180372  N   N   N   N   A
Chr01   180389  A   N   A   N   N

このデータセットには3つの異なるグループのサンプルがあり、それらを別々に別々のファイルに保存したいと思います。

これは十分なgroup1 IDを持つファイルです。

$ head group1
P0431
P434
P435

したがって、マスターデータからこれらのサンプルを見つけてgroup1.dataとして保存したいと思います。

$ head group1.data
#CHROM  POS    P0431    P434    P435   
Chr01   180349  G   N   G
Chr01   180372  N   N   A
Chr01   180389  A   N   N

ベストアンサー1

入力区切り文字としてスペース(複数)を想定し、csvcutand csvformatfromを使用します。csvkit

$ csvcut -d' ' -S -c "#CHROM,POS,$(paste -sd, < group1)" group1.data | csvformat -T
#CHROM  POS P0431   P434    P435
Chr01   180349  G   N   G
Chr01   180372  N   N   A
Chr01   180389  A   N   N

おすすめ記事