Chinaunix

标题: 提取相应数据 [打印本页]

作者: gooderpan    时间: 2016-10-27 23:24
标题: 提取相应数据
本帖最后由 gooderpan 于 2016-10-27 23:29 编辑

有一个文件file:
>Gene.12654::NM_000014::g.12654::m.12654 Gene.12654::NM_000014::g.12654  ORF len:1475 (+) NM_000014:114-4538(+)
MGKNKLLHPSLVLLLLVLLPTDASVSGKPQYMVLVPSLLHTETTEKGCVLLSYLNETVTV
SASLESVRGNRSLFTDLEAENDVLHCVAFAVPKSSSNEEVMFLTVQVKGPTQEFKKRTV
MVKNEDSLVFVQTDKSIYKPGQTVKFRVVSMDENFHPLNELIPLVYIQDPKGNRIAQWQS
>Gene.1744::NM_000016::g.1744::m.1744 Gene.1744::NM_000016::g.1744  ORF len:565 (+) NM_000016:2-1696(+)
ASPPTVQRNRALPAPPPSPSPALALFPRCGQPRRPTERARGGNAENQTRTIRDCPERGCD
>Gene.13727::NM_000017::g.13727::m.13727 Gene.13727::NM_000017::g.13727  ORF len:452 (+) NM_000017:2-1357(+)
GPAPEALRAWPLSRVPPPSTPEQRARSGRSRSLGLCLSPMAAALLARASGPARRALCPRA
WRQLHTIYQSVELPETHQMLLQTCRDFAEKELFPIAAQVDKEHLFPAAQVKKMGGLGLLA

前一个“>”与后二个“>”前的内容为一组,提取“>”后面相应的字符串,想要得到的结果为:
>NM_000014
MGKNKLLHPSLVLLLLVLLPTDASVSGKPQYMVLVPSLLHTETTEKGCVLLSYLNETVTV
SASLESVRGNRSLFTDLEAENDVLHCVAFAVPKSSSNEEVMFLTVQVKGPTQEFKKRTV
MVKNEDSLVFVQTDKSIYKPGQTVKFRVVSMDENFHPLNELIPLVYIQDPKGNRIAQWQS
> NM_000016
ASPPTVQRNRALPAPPPSPSPALALFPRCGQPRRPTERARGGNAENQTRTIRDCPERGCD
> NM_000017
GPAPEALRAWPLSRVPPPSTPEQRARSGRSRSLGLCLSPMAAALLARASGPARRALCPRA
WRQLHTIYQSVELPETHQMLLQTCRDFAEKELFPIAAQVDKEHLFPAAQVKKMGGLGLLA


请问大神,这个又该怎么分析呀???

作者: moperyblue    时间: 2016-10-28 08:12

  1. awk -F'::' '/>/{$0=">"$2}1' file
复制代码

作者: gooderpan    时间: 2016-10-28 08:21
回复 2# moperyblue
我是初学者,请问大神从'>'开始,后面的code这是什么意思呀??


作者: moperyblue    时间: 2016-10-28 08:39
回复 3# gooderpan


man awk

       -F fs
       --field-separator fs
              Use fs for the input field separator (the value of the FS predefined variable).

/>/  =>  含有">" 的行(如 第一行)

$0  =>  整行. 如: >Gene.12654::NM_000014::g.12654::m.12654 Gene.12654::NM_000014::g.12654  ORF len:1475 (+) NM_000014:114-4538(+)

$2  =>  该行的第二个域(字段),含有">"的行,按'::'分隔后第二个域就是NM_000014

$0=">"$2  就是将该行替换成">NM_000014"

1  <=>  1{print} 就是打印行
作者: moperyblue    时间: 2016-10-28 08:43

  1. sed '/>/{s/[^>:]*:://;s/:.*//}' file
复制代码

作者: jason680    时间: 2016-10-28 08:53
回复 3# gooderpan

http://bbs.chinaunix.net/thread-2309494-1-1.html

作者: jcdiy0601    时间: 2016-10-28 09:14
  1. awk 'BEGIN{FS="[:]+"}{if($1~/^>/){print ">"$2}else{print}}' file
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2