|で区切られた項目を持つファイルがあります。そしてタブ。
#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
答え2
使用ミラー、grep、貼り付け
paste <(<input.txt tail -n +2 | grep -oP '[0-9]+\.[0-9]+$') \
<(<input.txt tail -n +2 | mlr --nidx --ifs "|" unsparsify then clean-whitespace then cut -f 6)
あなたはやる
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
あなたの入力は奇妙です。最後のフィールドが特定のフィールドではなく各行の最後の数値になるように要求に割り当てる必要があります。
+-------------------+-------------------+----------------------+----------------------+----------------+------------+------+------------+--------------------------------------------+---------------------------------------+--------------------------------------------------+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
+-------------------+-------------------+----------------------+----------------------+----------------+------------+------+------------+--------------------------------------------+---------------------------------------+--------------------------------------------------+
| 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 | | |
+-------------------+-------------------+----------------------+----------------------+----------------+------------+------+------------+--------------------------------------------+---------------------------------------+--------------------------------------------------+
答え3
以下を使用して、パイプで区切られた6番目のcut
フィールドを簡単に見つけることができます。FPKM
したがって、簡単にするためにcut
6番目のフィールドを使用し、sed
最初の|
タブから最後のタブまで各行のすべての項目を削除するために使用します。
$ cut -d '|' -f 6- file | sed -n '1!s/|.*\([[:blank:]]\)/\1/p'
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
上記の方法を使用するsed
と、ヘッダー行を完全にスキップし、その行の最後のデータの前にスペースまたはタブを許可できます。最後のフィールドと元の6番目のフィールドの間の区切り文字でスペースまたはタブを再利用します。
プロセス置換をサポートするシェルでは、<(...)
次のコマンドを使用して生データをタブ区切りセットに再フォーマットできます。ここで、問題の列はパイプ区切り文字を保持します。column -t
デモ目的で最後に実行しましたが、タブ区切りの出力が必要な場合は削除する必要があります。
paste <( cut -d '|' -f -7 file | tr '|' '\t' ) \
<( cut -d '|' -f 8- file | sed 's/|[[:blank:]]//' ) |
tail -n +2 | column -t