【发布时间】:2014-04-11 06:00:41
【问题描述】:
我有一个这样的文件
$ head test
gene=ENSECAG00000012421
note="synaptonemal complex central element protein 1
[Source:HGNC Symbol;Acc:28852]"
gene=ENSECAG00000017803
note="Uncharacterized protein
[Source:UniProtKB/TrEMBL;Acc:F6SNR9]"
gene=ENSECAG00000019088
note="cytochrome P450 2E1 [Source:RefSeq
peptide;Acc:NP_001104773]"
gene=ENSECAG00000004229
我想让这个文件看起来像这样
ENSECAG00000012421 synaptonemal complex central element protein 1 [Source:HGNC Symbol;Acc:28852]
ENSECAG00000017803 Uncharacterized protein [Source:UniProtKB/TrEMBL;Acc:F6SNR9]
我不确定 note 是否总是在两行中,所以我想要一些类似于
的内容awk '{if(substr($1,1,4)=="gene") gene=$1; else print gene,$1}'
但我希望它能够识别它可能在两行中,并且单词之间也有空格。所以我希望它将“”中的所有内容打印为第 2 列(理想情况下用 \t 分隔 2 列,这样以后就不会混淆) 我知道如何去掉基因和注释和“,但不确定它们是否有助于识别。 我很高兴它是一串不同的命令,首先将整个音符放在一行中,然后将它与基因或所有内容一次性结合起来,无论哪种效果最好。
另外,如果您使用的是 awk,能否简要说明您在做什么?
感谢您的帮助!
【问题讨论】: