Linux学习-文件排序和FASTA文件操作

环境变量的补充

PATH只是众多环境变量中的一个变量,用于存储可执行文件所在的目录,以便在用户输入命令时可以查询的到。尤其是自己写的脚本或安装的程序,系统不会知道它们在哪个路径下,需要我们去提供给系统这些新的路径,学名叫设置环境变量。

此外常用到的环境变量还有LD_LIBARY_PATH: 指定动态链接库 (so文件)的位置,一般在安装软件出错时会用到;PYTHONPATH: 指定Python的安装包的路径;PERL5LIB: 指定perl的安装包的路径。

设置环境变量要注意2点:1. 设置新的环境变量时一般要包含原始的环境变量,不能覆盖;2. 注意自己的目录和系统环境变量的目录的顺序,想让哪个先被找到,就先放哪个。

文件排序

seq: 产生一系列的数字; man seq查看其具体使用。我们这使用seq产生下游分析所用到的输入文件。

# 产生从1到10的数,步长为1ct@ehbio:~$ seq 1 1012345678910# 产生从1到10的数,步长为1,用空格分割ct@ehbio:~$ seq -s ‘ ‘ 1 101 2 3 4 5 6 7 8 9 10# 产生从1到10的数,步长为2# 如果有3个数,中间的数为步长,最后一个始终为最大值ct@ehbio:~$ seq -s ‘ ‘ 1 2 101 3 5 7 9# 还记得前面提到的标准输入和标准输出吧# 后台回复 标准输入 查看ct@ehbio:~$ cat <(seq 0 3 17) testct@ehbio:~$ cat test 036912153915

sort: 排序,默认按字符编码排序。如果想按数字大小排序,需添加-n参数。

# 可能不符合预期的排序,系统首先排0,然后排1, 3, 6, 9ct@ehbio:~$ sort test012151533699# 按数字大小排序ct@ehbio:~$ sort -n test033699121515

sort -u: 去除重复的行,等同于sort | uniq。

ct@ehbio:~$ sort -nu test03691215

sort file | uniq -d: 获得重复的行。(d=duplication)

ct@ehbio:~$ sort -n test | uniq -d3915

sort file | uniq -c: 获得每行重复的次数。

# 第一列为每行出现的次数,第二列为原始的行ct@ehbio:~$ sort -n test | uniq -c  1 0  2 3  1 6  2 9  1 12  2 15# 换一个文件看的更清楚ct@ehbio:~$ cat a> b> c> b> a> e> d> a> END# 第一列为每行出现的次数,第二列为原始的行ct@ehbio:~$ sort test2 | uniq -c      3 a      2 b      1 c      1 d      1 e# 在执行uniq操作前,文件要先排序,不然结果很诡异ct@ehbio:~$ cat test2 | uniq -c      1 a      1 b      1 c      1 b      1 a      1 e      1 d      1 a

整理下uniq -c的结果,使得原始行在前,每行的计数在后。

awk是一个强大的文本处理工具,其处理数据模式为按行处理。每次读入一行,进行操作。OFS: 输出文件的列分隔符 (output file column separtor);FS为输入文件的列分隔符 (默认为空白字符)。awk中的列从第1到n列,分别记录为$1, $2 … $n。BEGIN表示在文件读取前先设置基本参数;与之相对应的是END,只文件读取完成之后进行操作。不以BEGIN, END开头的{}就是文件读取、处理的部分。

# 管道符还记得吧,后台回复 管道 可查看# awk的操作就是镀金上一步的结果,去除多余的空白,然后调换2列ct@ehbio:~$ sort test2 | uniq -c | awk ‘BEGIN{OFS=””;}{print $2, $1}’a    3b    2c    1d    1e    1

对两列文件,安照第二列进行排序, sort -k2,2n。

# 第二列按数值大小排序ct@ehbio:~$ sort test2 | uniq -c | awk ‘BEGIN{OFS=””;}{print $2, $1}’ | sort -k2, 2nc    1d    1e    1b    2a    3# 第二列按数值大小排序# 第二列相同的再按第一列的字母顺序的逆序排序 (-r)# 注意看前3行的顺序与上一步结果的差异ct@ehbio:~$ sort test2 | uniq -c | awk ‘BEGIN{OFS=””;}{print $2,$1}’ | sort -k2,2n -k1,1re    1d    1c    1b    2a    3

FASTA序列提取

生成单行序列FASTA文件,提取特定基因的序列,最简单的是使用grep命令。

grep在前面也提到过,以后还会经常提到,主要用途是匹配文件中的字符串,以此为基础,进行一系列的操作。如果会使用正则表达式,将会非常强大。正则表达式版本很多,几乎每种语言都有自己的规则,本文档不会展开,用到哪个提哪个。

# 生成单行序列FASTA文件ct@ehbio:~$ cat >SOX2> ACGAGGGACGCATCGGACGACTGCAGGACTGTC> >POU5F1> ACGAGGGACGCATCGGACGACTGCAGGACTGTC> >NANOG> CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGT> ENDct@ehbio:~$ cat test.fasta >SOX2ACGAGGGACGCATCGGACGACTGCAGGACTGTC>POU5F1ACGAGGGACGCATCGGACGACTGCAGGACTGTC>NANOGCGGAAGGTAGTCGTCAGTGCAGCGAGTCCGT# grep匹配含有SOX2的行# -A 1 表示输出的行中,包含匹配行的下一行 (A: after)ct@ehbio:~$ grep -A 1 ‘SOX2’ test.fasta >SOX2ACGAGGGACGCATCGGACGACTGCAGGACTGTC# 也可以使用AWK# 先判断当前行是不是 > 开头,如果是,表示是序列名字行,替换掉大于号,取出名字。# sub 替换, sub(被替换的部分,要替换成的,待替换字符串)# 如果不以大于号开头,则为序列行,存储起来。# seq[name]: 相当于建一个字典,name为key,序列为值。然后就可以使用name调取序列。ct@ehbio:~$ awk ‘BEGIN{OFS=FS=””}{if($0~/>/) {name=$0; sub(“>”, “”, name);} else seq[name]=$0;}END{print “>SOX2”; print seq[“SOX2”]}’ test.fasta>SOX2ACGAGGGACGCATCGGACGACTGCAGGACTGTC

多行FASTA序列提取要麻烦些,一个办法就是转成单行序列,用上面的方式处理。

sed和tr都为最常用的字符替换工具。

ct@ehbio:~$ cat >SOX2> ACGAGGGACGCATCGGACGACTGCAGGACTGTC> ACGAGGGACGCATCGGACGACTGCAGGACTGTC> ACGAGGGACGCATCGGACGACTGCAGGAC> >POU5F1> CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGT> CGGAAGGTAGTCGTCAGTGCAGCGAGTCC> >NANOG> ACGAGGGACGCATCGGACGACTGCAGGACTGTC> ACGAGGGACGCATCGGACGACTGCAGG> ACGAGGGACGCATCGGACGACTGCAGGACTGTC> ACGAGGGACGCATCGGACGACTGCAGGACTGT> END# 给>号开头的行的行尾加个TAB键,以便隔开名字和序列# TAB键不可见,直接看看不大# ()表示记录匹配的内容,1则表示()中记录的匹配的内容# 后面我们专门讲sedct@ehbio:~$ sed ‘s/^(>.*)/1/’ test.fasta >SOX2    ACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGAC>POU5F1    CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGTCGGAAGGTAGTCGTCAGTGCAGCGAGTCC>NANOG    ACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGACTGT#使用cat -A 可以显示文件中所有的符号# ^I 表示tab键# $表示行尾ct@ehbio:~$ sed ‘s/^(>.*)/1/’ test.fasta | cat -A>SOX2^I$ACGAGGGACGCATCGGACGACTGCAGGACTGTC$ACGAGGGACGCATCGGACGACTGCAGGACTGTC$ACGAGGGACGCATCGGACGACTGCAGGAC$>POU5F1^I$CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGT$CGGAAGGTAGTCGTCAGTGCAGCGAGTCC$>NANOG^I$ACGAGGGACGCATCGGACGACTGCAGGACTGTC$ACGAGGGACGCATCGGACGACTGCAGG$ACGAGGGACGCATCGGACGACTGCAGGACTGTC$ACGAGGGACGCATCGGACGACTGCAGGACTGT$# 把所有的换行符替换为空格# tr这个命令,前面提到过,若想不起来 `man tr`查看# 主意第二个参数,引号内为空格。ct@ehbio:~$ sed ‘s/^(>.*)/1/’ test.fasta | tr ” ‘ ‘>SOX2     ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGGAC >POU5F1     CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGT CGGAAGGTAGTCGTCAGTGCAGCGAGTCC >NANOG     ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGG ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGGACTGT # 把最后一个空格替换为换行符ct@ehbio:~$ sed ‘s/^(>.*)/1/’ test.fasta | tr ” ‘ ‘ | sed -e ‘s/ $//’>SOX2     ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGGAC >POU5F1     CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGT CGGAAGGTAGTCGTCAGTGCAGCGAGTCC >NANOG     ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGG ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGGACTGT# 把  ‘ >’替换为换行符 注意被替换的是 空格+大于号# 当连用多个替换命令时,使用-e 隔开ct@ehbio:~$ sed ‘s/^(>.*)/1/’ test.fasta | tr ” ‘ ‘ | sed -e ‘s/ $//’ -e ‘s/ >/>/g’>SOX2     ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGGAC>POU5F1     CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGT CGGAAGGTAGTCGTCAGTGCAGCGAGTCC>NANOG     ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGG ACGAGGGACGCATCGGACGACTGCAGGACTGTC ACGAGGGACGCATCGGACGACTGCAGGACTGT# 把所有的空格替换掉ct@ehbio:~$ sed ‘s/^(>.*)/1/’ test.fasta | tr ” ‘ ‘ | sed -e ‘s/ $//’ -e ‘s/ >/>/g’ -e ‘s/ //g’>SOX2    ACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGAC>POU5F1    CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGTCGGAAGGTAGTCGTCAGTGCAGCGAGTCC>NANOG    ACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGACTGT# 把TAB键转换为换行符ct@ehbio:~$ sed ‘s/^(>.*)/1/’ test.fasta | tr ” ‘ ‘ | sed -e ‘s/ $//’ -e ‘s/ >/>/g’ -e ‘s/ //g’ -e ‘s///g’ >SOX2ACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGAC>POU5F1CGGAAGGTAGTCGTCAGTGCAGCGAGTCCGTCGGAAGGTAGTCGTCAGTGCAGCGAGTCC>NANOGACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGACTGT

或者简单点,直接用前面的awk略微做下修改。

# 差别只在一点# 对于单行fasta文件,只需要记录一行,seq[name]=$0# 对于多好fasta文件,需要把每一行序列都加到前面的序列上,seq[name]=seq[name]$0ct@ehbio:~$ awk ‘BEGIN{OFS=FS=””}{if($0~/>/) {name=$0; sub(“>”, “”, name);} else seq[name]=seq[name]$0;}END{print “>SOX2”; print seq[“SOX2”]}’ test.fasta>SOX2ACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGACTGTCACGAGGGACGCATCGGACGACTGCAGGAC

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月14日 12:29
下一篇 2022年6月14日 12:30

相关推荐

  • cad连续标注快捷键(cad连续标注快捷键)

    本文主要讲的是cad连续标注快捷键,以及和cad连续标注快捷键相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 cad中连续标注快捷键 CAD尺寸标准快捷命令:DL…

    2022年11月27日
  • 宝可梦朱紫宝主顺序怎么选择?宝可梦朱紫宝主挑战顺序攻略

    宝可梦朱紫宝主顺序如何选择?宝主挑战的顺序有很多玩家都加入了讨论,大家想要了解清楚正确的挑战顺序,接下来小编就给大家简单的介绍一下宝主挑战的顺序,各位赶紧通过下面的攻略多了解一下详…

    2022年11月25日
  • 淘宝直播开通后带货链接怎么做(淘宝直播需要开通淘宝店铺吗)

    直播带货无论是对于商家来说还是主播收益都是非常可观的,所以不少平台都有直播带货功能,一些小伙伴也想加入淘宝直播,那么淘宝直播开通后带货链接怎么做?下面小编为大家带来淘宝直播开通后带…

    2022年11月24日
  • 科比19岁女儿遭自称与她生“科比式孩子”男子跟踪骚扰

    极目新闻记者王亮亮黄佳琪 据福克斯新闻网报道,当地时间11月21日,已故篮球巨星科比·布莱恩特的长女娜塔莉亚·布莱恩特21日向法院提交临时限制令,声称这位32岁的前科从十几岁起就骚…

    2022年11月24日
  • 宝可梦朱紫道馆及宝主攻略顺序是什么 道馆及宝主攻略顺序汇总

    作为宝可梦资深爱好者,小伙伴们对宝可梦朱紫里面的所有道馆恨不得马上跳过,当场就来挑战地区冠军,但这显然是不可能的,你得按照游戏里面遇到的顺序来进行挑战。那么具体的挑战顺序是什么样的…

    2022年11月24日
  • 免费清理c盘的软件(清理c盘空间不影响系统)

    电脑用久了慢如龟速,还卡顿,这最大的原因啊就是C盘空间不足造成的。 即使电脑配置再好,或者硬盘再快,如果长时间没有打扫C盘,打开文件或者稳定之类的,都卡得让人头大。 这时候呢不要去…

    2022年11月24日
  • pdf虚拟打印机(添加pdf虚拟打印机)

    本文主要讲的是pdf虚拟打印机,以及和添加pdf虚拟打印机相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 pdf虚拟打印机具体是什么功能? 电脑虚拟打印机的功能有…

    2022年11月24日
  • 快手限流多久能解除(快手限流什么意思)

    我相信很多人都看中了快手平台的商机,都争先恐后地想要抢占机会,可一些人刚刚作出一点成绩,就被降权了,自己也不知道什么原因。所以今天就来聊聊快手账号降权操作分享,赶快来看看避免违规!…

    2022年11月23日
  • Win11 22H2再出新问题Bug:无法弹出USB设备

    作为Windows 11的首次大更新,在Win11 22H2发布后并没有带来预想的场景,各种问题频现成为了一种常态。 近日有消息称,Win11 22H2存在一个占用冲突Bug,当用…

    2022年11月22日
  • 美团月付300小额取现?美团月付取现300不见了

    很多上班族每天都在使用美团点外卖,你知道美团现在推出了一款类似花呗的产品吗?可以在美团消费的时候先消费后还款,叫做美团月付,是美团推出的一款消费型产品,不能直接提现到银行卡,只能用…

    2022年11月21日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息