パイプで区切られたファイルと整列されていない区切りフィールド

パイプで区切られたファイルと整列されていない区切りフィールド

|で区切られた項目を持つファイルがあります。そしてタブ。

#Name   Length  Bases   Coverage    Reads   RPKM    Frags   FPKM
ENST00000423372.3|ENSG00000237683.5|-|-|AL627309.1-201|AL627309.1|2661|UTR5:1-70|CDS:71-850|UTR3:851-2661|  2661    1989878 747.7933    13178   33.6603 6589    33.6603
ENST00000426406.1|ENSG00000235249.1|OTTHUMG00000002860.1|OTTHUMT00000007999.1|OR4F29-001|OR4F29|995|UTR5:1-19|CDS:20-958|UTR3:959-995|  995 302 0.3035  2   0.0137  1   0.0137
ENST00000599533.1|ENSG00000269831.1|-|-|AL669831.1-201|AL669831.1|129|CDS:1-129|    129 52548   407.3488    348 18.3359 174 18.3359
ENST00000437963.1|ENSG00000187634.6|OTTHUMG00000040719.8|OTTHUMT00000097862.3|SAMD11-003|SAMD11|387|UTR5:1-60|CDS:61-387|   387 302 0.7804  2   0.0351  1   0.0351
ENST00000342066.3|ENSG00000187634.6|OTTHUMG00000040719.8|OTTHUMT00000276866.2|SAMD11-010|SAMD11|2551|UTR5:1-83|CDS:84-2129|UTR3:2130-2551|  2551    17818   6.9847  118 0.3144  59  0.3144
ENST00000341065.4|ENSG00000187634.6|OTTHUMG00000040719.8|OTTHUMT00000097860.4|SAMD11-001|SAMD11|2191|CDS:1-1769|UTR3:1770-2191| 2191    12080   5.5135  80  0.2482  40  0.2482
ENST00000455979.1|ENSG00000187634.6|OTTHUMG00000040719.8|OTTHUMT00000097863.4|SAMD11-004|SAMD11|1731|CDS:1-1625|UTR3:1626-1731| 1731    302 0.1745  2   0.0079  1   0.0079
ENST00000598827.1|ENSG00000268179.1|-|-|AL645608.1-201|AL645608.1|336|CDS:1-336|    336 302 0.8988  2   0.0405  1   0.0405

私が望む出力は

AL627309.1  33.6603
OR4F29      0.0137
AL669831.1  18.3359
SAMD11  0.0351
SAMD11  0.3144
SAMD11  0.2482
SAMD11  0.0079
     
separated by tab. 

tabsを使用して|をすべて置き換えましたが、tr '|' "\t" < input.file フィールドは可変であるため、結果ファイルにこの内容が表示されます。

#Name                                       Length  Bases   Coverage    Reads   RPKM    Frags   FPKM    
ENST00000423372.3   ENSG00000237683.5   -   -   AL627309.1-201  AL627309.1  2661    UTR5:1-70   CDS:71-850  UTR3:851-2661       2661    1989878 747.7933    13178   33.6603 6589    33.6603
ENST00000426406.1   ENSG00000235249.1   OTTHUMG00000002860.1    OTTHUMT00000007999.1    OR4F29-001  OR4F29  995 UTR5:1-19   CDS:20-958  UTR3:959-995        995 302 0.3035  2   0.0137  1   0.0137
ENST00000599533.1   ENSG00000269831.1   -   -   AL669831.1-201  AL669831.1  129 CDS:1-129       129 52548   407.3488    348 18.3359 174 18.3359     
ENST00000437963.1   ENSG00000187634.6   OTTHUMG00000040719.8    OTTHUMT00000097862.3    SAMD11-003  SAMD11  387 UTR5:1-60   CDS:61-387      387 302 0.7804  2   0.0351  1   0.0351  
ENST00000342066.3   ENSG00000187634.6   OTTHUMG00000040719.8    OTTHUMT00000276866.2    SAMD11-010  SAMD11  2551    UTR5:1-83   CDS:84-2129 UTR3:2130-2551      2551    17818   6.9847  118 0.3144  59  0.3144
ENST00000341065.4   ENSG00000187634.6   OTTHUMG00000040719.8    OTTHUMT00000097860.4    SAMD11-001  SAMD11  2191    CDS:1-1769  UTR3:1770-2191      2191    12080   5.5135  80  0.2482  40  0.2482  
ENST00000455979.1   ENSG00000187634.6   OTTHUMG00000040719.8    OTTHUMT00000097863.4    SAMD11-004  SAMD11  1731    CDS:1-1625  UTR3:1626-1731      1731    302 0.1745  2   0.0079  1   0.0079  

これを行う優雅な方法がある場合は、ご案内ください。

ベストアンサー1

タブとスペースが正しいと仮定すると、これは機能します。column -tこれを別のツールにリンクする場合は、フィールド間にタブのみを含めて削除します。

awk -F'[|\t]' '!/^#/{printf "%s\t%s\n", $6, $NF}' your_datafile | column -t

|これにより、2つのタブのうちの1つのデータが分割され、1.で始まる列に番号が付けられ、1.で始まらないすべての!/^#/行と一致します#(意図はヘッダー行をスキップするためですNR>1。)この$6構成は、6番目のフィールドを選択します。$NFフィールド番号に関係なく、最後のフィールドが選択されます。

サンプルデータファイル出力を使用して、

AL627309.1  33.6603
OR4F29      0.0137
AL669831.1  18.3359
SAMD11      0.0351
SAMD11      0.3144
SAMD11      0.2482
SAMD11      0.0079
AL645608.1  0.0405

おすすめ記事