day9 文本处理:通过命令看或编辑文本形式数据

2022-05-15  本文已影响0人  meraner

一、在B站“生信人应该这样学Linux”第4讲-文本处理

  1. 尝试用 wget -c http://www.biotrainee.com/jmzeng/igv/test.bed 命令下载大神给的测试文件。-c是断电续传的意思。
    如法炮制又下载了一个wget -c http://www.biotrainee.com/jmzeng/rmDuplicate.zip
    在那个目录下执行这个命令,就下载到那个目录下哦。

  2. wc 命令,word count,显示三个数据:行数,单词数,字符数。wc -l 文件名,只显示line的数目。
    head -1 文件名,显示一行。tail -1 文件名,显示最后一行。more 文件名,一页一页看,通过按键q,来退出。less 只显示十行,-SN这个参数是每行不换行的显示,且标注行数。

  3. grep 命令 (可以看成一个选择,或者行操作)
    grep -n H3K4me1 test.bed,在test.bed中查找H3K4me1字符,列出所有符合的行,并标出行号。
    cat test.bed -n,显示test.bed,并标出行号

一个命令都要有命令符,对象(文件或目录),参数,这三个。有些命令比如ls直接可以执行,是省略了对象"./"当前目录,也省略了参数。

管道操作可以使得命令更简单,少一些中间输出文件。

  1. cut -f 1 test.bed,会输出test.bed中的第一列。(可以看成一种列操作)
    默认情况下,当使用 -f 选项时,cut 将总是原样输出不包含分隔符的那一行(可能假设它是非数据行,就像表头或注释等):
    -d用来制定输出时候的分隔符,(当没有使用 -d 选项时,默认以 tab 字符来作为分隔符):
    cut -f 6,7 -d';' BALANCE-WITH-HEADER.csv,这个命令是把第6,7列数据展示,把文件中的分号作为分割符。
    cut -f 5 -d';' BALANCE.csv | head
    而这个则是用了管道符(小竖线)。管道符的使用,减少了一步。如果没有管道符,需要先建立一个文件把第5列单独保存一下。之后再head这个新文件。

  2. awk命令
    awk '{print $1":"$2","$3}' test.bed'
    是把test.bed 中第一列后面加上冒号,第二列后面加上逗号,再接上第三列,输出出来。比如test.bed 文件,第一列chr1,第二列是序列起点,第三列是序列终点。

    image.png

提出新问题,有一个坐标(染色体,起点位置,终点位置),如何获取序列?

  1. sort命令用来排序
    sort -k2nr test.bed 就是按照第二列的数值(-n) ,反向排序(-r)
sort -k2nr test.bed|cut -f 1-3
这个命令包含了管道符,先对test.bed里面的第二列数据反向排序,再输出1-3列数据。 image.png

二、了解sam,bam文件

  1. sam是序列比对的存储格式,由一些比对软件产生,如bwa,bowtie2
  2. Sequence Alignment Mapping (SAM)
    sam‘ 序列比对映射’的首字母缩写
  3. sam文件分为两部分,注释信息(header section)和比对结果部分(alignment section)比对结果部分(alignment section),每一行表示一个片段(segment)的比对信息,包括11个必须的字段(mandatory fields)和一个可选的字段,字段之间用tag分割。必须的字段有11个,顺序固定,不可用时,根据字段定义,可以为’0‘或者’*’
  4. bam是其压缩格式,samtools可以转化
上一篇下一篇

猜你喜欢

热点阅读