bashを使用して列と行を選択的に削除する方法は?

bashを使用して列と行を選択的に削除する方法は?

現在、次のデータセットがあります。

入力する

Hybridization REF   TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-A4BB-01A-11D-A31Y-05    TCGA-FA-A4BB-01A-11D-A31Y-05    TCGA-FA-A4BB-01A-11D-A31Y-05    TCGA-FA-A4BB-01A-11D-A31Y-05
Composite Element REF   Beta_value  Gene_Symbol Chromosome  Genomic_Coordinate  Beta_value  Gene_Symbol Chromosome  Genomic_Coordinate
cg00000029  0.856505141 RBL2    16  53468112    0.334665026 RBL2    16  53468112
cg00000108  NA  C3orf35 3   37459206    NA  C3orf35 3   37459206
cg00000109  NA  FNDC3B  3   171916037   NA  FNDC3B  3   171916037

データセットのサイズは10 GBに近く、はるかに大きいです。たとえば、Rで実行するには大きすぎます。

しかし、実際には重複する熱がたくさんあります。たとえば、タイトルが(2行目)とである各列のうちの1つだけを保持しますGene_Symbol。個々の列はサンプルごとに異なるため、保存する必要があります。サンプルIDは最初の行にあります。したがって、上記の例では、望ましい出力は次のようになります。ChromosomeGenomic_CoordinateBeta_value

希望の出力

Hybridization REF   Gene_Symbol Chromosome  Genomic_Coordinate  TCGA-FA-8693-01A-11D-2399-05    TCGA-FA-A4BB-01A-11D-A31Y-05
cg00000029  RBL2    16  53468112    0.856505141 0.334665026
cg00000108  C3orf35 3   37459206    NA  NA
cg00000109  FNDC3B  3   171916037   NA  NA

重複した情報を削除するために、最初の行の列ヘッダーを混在させました。

Bashを使用する最も効率的な方法は何ですか?

ベストアンサー1

ヘッダがファイルの上部の2行であると仮定すると、手動で修正します。 (簡単な方法:tail -n +3パイプを介して最初の2行をスキップして、必要なヘッダーを含むファイルに関連付けます。)

その後、デフォルトでは[TAB]文字に分割されているを使用して残りの操作を実行できます。cutこれはすでに持っている文字なので非常に便利です。ただパイプで

cut -f1,3,6

または他のもの(この例では列1、3、6を選択します)。

おすすめ記事