有的时候我们会在服务器上操作,如果总是借助TBtools简化ID,再导入服务器未免有些麻烦了。其实一个简单的grep和awk指令就可以完成。
假设我们有input.fa其中他们的ID分别是(拟南芥WUS基因为例子):
>AT2G17950.1 | Symbols: WUS, WUS1, PGA6 | WUSCHEL 1, WUSCHEL | chr2:7809100-7810671 REVERSE LENGTH=292
……省略蛋白序列
>AT2G33880.2 | Symbols: WOX9A, STIP, HB-3, WOX9 | STIMPY, WUSCHEL-RELATED HOMEOBOX 9, WUSCHEL related homeobox 9A, homeobox-3 | chr2:14342037-14343597 REVERSE LENGTH=388
……省略蛋白序列
观察可知,他们被|分隔开,我们需要借助awk里的split指令。
grep '^>' | awk '{split($0,a,"|"); print a[1]}' input.fa > output.fa
grep '^>' 中 ^ > 指以 > 为开头的行。
awk 中 split($0,a,"|") 中 $0 指这一行(虽然只有一列,可以用$1,但是无所谓啦),以|为分隔符把整一行的字符串分隔成不同元素放入列表a中。
print a[1]就是打印列表中第一个元素(在python中是a[0],所以我更喜欢linux)。
【 整一句话就是在说 】:抓取以>为开头的行,以|分隔开来,并且打印被分隔后第一个元素,从input.fa中执行这个指令并输入到output.fa中。
你就会得到 output.fa 如下所示
>AT2G17950.1
……省略蛋白序列
>AT2G33880.2
……省略蛋白序列
快去试试吧!