day9 文本处理:通过命令看或编辑文本形式数据
一、在B站“生信人应该这样学Linux”第4讲-文本处理
-
尝试用
wget -c http://www.biotrainee.com/jmzeng/igv/test.bed
命令下载大神给的测试文件。-c是断电续传的意思。
如法炮制又下载了一个wget -c http://www.biotrainee.com/jmzeng/rmDuplicate.zip
在那个目录下执行这个命令,就下载到那个目录下哦。 -
wc 命令,word count,显示三个数据:行数,单词数,字符数。wc -l 文件名,只显示line的数目。
head -1 文件名,显示一行。tail -1 文件名,显示最后一行。more 文件名,一页一页看,通过按键q,来退出。less 只显示十行,-SN这个参数是每行不换行的显示,且标注行数。 -
grep 命令 (可以看成一个选择,或者行操作)
grep -n H3K4me1 test.bed
,在test.bed中查找H3K4me1字符,列出所有符合的行,并标出行号。
cat test.bed -n
,显示test.bed,并标出行号
一个命令都要有命令符,对象(文件或目录),参数,这三个。有些命令比如ls直接可以执行,是省略了对象"./"当前目录,也省略了参数。
管道操作可以使得命令更简单,少一些中间输出文件。
-
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这个新文件。 -
awk命令
image.png
awk '{print $1":"$2","$3}' test.bed'
是把test.bed 中第一列后面加上冒号,第二列后面加上逗号,再接上第三列,输出出来。比如test.bed 文件,第一列chr1,第二列是序列起点,第三列是序列终点。
提出新问题,有一个坐标(染色体,起点位置,终点位置),如何获取序列?
- sort命令用来排序
sort -k2nr test.bed 就是按照第二列的数值(-n) ,反向排序(-r)
sort -k2nr test.bed|cut -f 1-3
这个命令包含了管道符,先对test.bed里面的第二列数据反向排序,再输出1-3列数据。
image.png
二、了解sam,bam文件
- sam是序列比对的存储格式,由一些比对软件产生,如bwa,bowtie2
- Sequence Alignment Mapping (SAM)
sam‘ 序列比对映射’的首字母缩写 - sam文件分为两部分,注释信息(header section)和比对结果部分(alignment section)比对结果部分(alignment section),每一行表示一个片段(segment)的比对信息,包括11个必须的字段(mandatory fields)和一个可选的字段,字段之间用tag分割。必须的字段有11个,顺序固定,不可用时,根据字段定义,可以为’0‘或者’*’
- bam是其压缩格式,samtools可以转化