Linux笔记及习题

作者: 董高超_85d0 | 来源:发表于2018-12-04 11:15 被阅读239次

    Linux课程整理

    1、学习资料

    马哥linux视频,Linux 命令行与Shell脚本编程大全

    2、系统认知

    看学习资料

    3、Shell基本命令

    Shell的基本操作(shell就是一个翻译官)

    Shell为一命令解释器(command interpreter),将使用者的命令翻译给核心处理;同时将核心处理结果翻译给使用者。

    通常由三部分组成:1.命令字,2.参数,3.操作对象;cmd [options][operation]

    Shell prompt提示符:$:给一般使用者账号使用;#:给root(管理员)账号使用;

    cursor光标,是指示键盘在命令行所输入的位置;

    carriage return回车,命令行读进,是使用者告诉shell可以执行命令行了;

    Internal field separator(IFS),域内字段分隔符,包括space, tabnewline.

    Shell工作原理,会依据IFS将command line所输入的文字给拆解为“字段”(word),然后再针对特殊字符(meta)先作处理,最后再重组整行command line。

    (1) 查看文件ls

    ls -l #查看当前目录下的文件
    ls -al #查看当前目录下的所有文件(包括隐藏文件)
    ls -lh #查看当前目录下的文件,并显示其大小(K,M,G等)
    

    (2) 访问文件cd

    cd #change directory
    cd .. #返回上一级
    cd ~ #返回用户主目录
    cd - #返回到来这之前的目录
    cd / #返回根目录
    

    (3)新建文件夹mkdir

    mkdir dgc #在当前文件夹下创建名为dgc的文件夹
    mkdir file1 file2 file3 #创建3个平级目录
    mkdir file{1:3}  #同样可以创建3个平级目录
    mkdir -p 1/2/3/4/5/6 #创建多层子目录
    

    (4) 删除文件rmdir rm

    rmdir dgc  #dgc为空目录,不可删除非空文件夹#
    rmdir -p a/b/c/d #多级删除文件夹
    rm a  #删除文件a,不可以删除目录a
    rm file1 file2 file3  #删除多个文件
    rm -rf a1 #无论a1下是否有文件都将a1删除(谨慎使用,linux删除文件后不可逆)
    

    (5) 创建文件touch

    touch a.txt
    touch file1 file2 file3 #同时创建多个文件
    

    (6) 复制cp

    cp src.c src.c.bak #复制src.c并重新命名为src.bak;
    cp src.c a/src.c.bak #复制src.c到a目录下并重新命名为src.bak;
    cp -r a/ b/ #拷贝文件夹a及其里面的子文件夹到b;
    

    (7) 重命名或者移动mv

    mv src.c.bak src.bak #将src.c.bak改名为src.bak;
    mv jeapdu.s a/ #将jeapdu.s文件移动到目录a中;
    mv a/jeapdu.s src #将目录a文件夹下的jeapdu文件移动到当前目录并改名为src;
    mv a src #修改目录名;
    #一般情况下:不同级目录为移动,同级目录为改名字
    

    (8) tar命令

    tar在Linux上是常用的打包、压缩、加压缩工具

    参数:
    -c :create 建立压缩档案的参数;
    -x : 解压缩压缩档案的参数;
    -z : 是否需要用gzip压缩;
    -v: 压缩的过程中显示档案;
    -f: 置顶文档名,在f后面立即接文件名,不能再加参数

    ①将tgz文件解压到指定目录

    tar -zxvf test.tgz -C #指定目录
    

    比如将/source/kernel.tgz解压到 /source/linux-2.6.29 目录

    tar -zxvf /source/kernel.tgz -C /source/linux-2.6.29
    

    ②将整个/home/www/images 目录下的文件全部打包为 /home/www/images.tar

    tar -cvf /home/www/images.tar /home/www/images #仅打包,不压缩
    tar -zcvf /home/www/images.tar.gz /home/www/images #打包后,以gzip压缩
    
    tar -cvf ab.tar a b #将a和b文件压缩到ab.tar
    tar -xvf ab.tar #解压缩
    tar -tvf ab.tar #查看压缩文件
    tar -xvf ab.tar a #将ab.tar仅解压a文件
    tar -xvf ab.tar -C ss/ #将ab.tar文件解压缩到ss目录下
    tar -zcvf ac.tar.gz ac.tar #将ac.tar压缩并创建为ac.tar.gz
    tar -jcvf ac.tar.bz2 ac.tar #将ac.tar压缩并创建为ac.tar.bz2
    tar -zxvf ac.tar.gz #解压缩ac.tar.gz文件
    tar -jxvf ac.tar.bz2 #解压缩ac.tar.bz2文件
    

    (9) 压缩文件gzip bzip2 (源文件都会消失)

    gzip aa.tar #压缩aa.tar文件;
    gunzip aa.tar.gz #解压缩aa.tar.gz文件;
    bzip2 ab.tar #压缩ab.tar文件;
    bunzip2 ab.tar.bz2 #解压缩ab.tar.bz2文件;
    

    (10) 查找文件

    which #可定位可执行文件所在目录;
    whereis #命令定位文件所在目录:二进制的、源文件、帮助文档;
    whereis -m pwd #只查找帮助文档;
    whereis pwd #输出3条:命令本身所在目录,源文件所在目录,其帮助文件所在目录;
    locate #基于本地数据库(每天需要更新一次,update)进行查找 locate aa.tar.gz,不能查找新创建的文件;手动更新数据库sudo updated后,可以用locate进行查找新创建的文件;
    find #基于文件名在磁盘中查找,格式:“find 查找目录 查找内容” 
    find ./ -name 'af*'
    

    (11) 查看文件

    head #查看文件最开始的几行,默认为10行,可使用-n 6指定查看前6行
    head -n 6 filename
    tail #查看文件最后几行
    less和more也可以用来查看文件,尤其是文件内容特别多的时候
    more分屏打印文件,继续往下看按空格键,往前看shift+pageup
    less也可以分屏打印文件
    less -SN abc.txt #查看abc.txt文件,并进行对齐输出行号
    

    (12) cat命令

    cat filename #显示整个文件 
    cat > filename  #创建一个文件 
    cat file1 file2 > file  #将几个文件合并为一个文件
    Cat <<END #可以输入内容,再回车,继续输入内容,直到我们输入END,输入过程结束
    Cat <<END >data/test.fa #将cat输入的内容存入data目录下的test文档中,并保存为fa格式
    

    (13)sort命令

    sort为排序命令,比较原则是从首字符开始,依次按ASCII码值进行比较,最后将比较结果按升序输出。

    用法:sort [选项]... [文件]...
     或:sort [选项]... --files0-from=F

    常用参数

     -k, --key=位置1[,位置2] #在位置1 开始一个key,在位置2 终止(默认为行尾)
     -r, --reverse #逆序输出排序结果
     -t, --field-separator=分隔符 #使用指定的分隔符代替非空格到空格的转换
     -n, --numeric-sort #根据字符串数值比较
     -f, --ignore-case #忽略字母大小写
     
     # Example
      sort -k 1,1 -k 2,2n test.bed #对第一列按照字符排序,第二列按照数值排序
      sort -k 1,1 -k 2,2nr test.bed #对第一列按照字符排序,第二列按照数值反向排序
    

    (14) 其他命令

    echo a #屏幕显示a
    ln -s a.txt b.txt #将a.txt软链接到b.txt
    pwd #输出当前路径
    

    4、文本编辑常用命令

    (1) 取字符串

    file=/dir1/dir2/dir3/my.file.txt
    ${file#*/}  #删掉第一个/及其左边的字符串:
    dir1/dir2/dir3/my.file.txt
    ${file##*/} #删掉最后一个/及其左边的字符串
    my.file.txt
    ${file#*.} #删掉第一个.及其左边的字符串
    file.txt
    ${file##*.} #删掉最后一个.及其左边的字符串
    txt
    ${file%/*} #删掉最后一个/及其右边的字符串
    /dir1/dir2/dir3
    ${file%%/*} #删掉第一个/及其右边的字符串
    (空值)
    ${file%.*} #删掉最后一个.及其右边的字符串
    /dir1/dir2/dir3/my.file
    ${file%%.*} #删掉第一个.及其右边的字符串
    /dir1/dir2/dir3/my
    

    (2) vim编辑

    vim一共有三种模式,包括命令模式(Command mode)、输入模式(Insert mode)和底线命令模式(Last line modle)

    vim abc.txt #进入abc.txt的编辑模式
    

    i进入输入模式,Esc退出输入模式,进入命令模式,:进入底线命令模式

    常用命令

    i #进入输入模式,修改位置为光标所在位置
    a #进入输入模式,修改位置为光标下一位
    I #进入输入模式,调到某一行行首
    A #进入输入模式,调到某一行行尾
    /find #向下查找
    ?find #向上查找
    x #删除光标所在字符
    10x #连续向后删除10个字符
    yy #复制当前行,结合光标、行数和p可以进行多行的指定位置复制(eg 2yy然后p)
    dd #删除当前行,dd搭配p,重复删除光标所在行
    u #撤销
    ctrl+r #退回
    :%s/before/after/ #替换,也可用sed进行操作(eg:sed -i 's/before/after/' file)
    :wq && wq! #保存和强制保存/覆盖
    :q && :q! #退出和强制退出
    :w new_file_name #简言之另存为,可保留源文件。
    

    (3) grep命令

    grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

    常用参数

    -i #匹配时忽略大小写
    -v #取没有匹配的行
    -w #精确匹配
    -e #匹配多个内容
    -A #后面可加数字,为after的意思
    -B #后面可加数字,为before的意思
    -C #指定输出包括匹配到的前后多少行
    -f #file,从file种获得匹配的数据
    -n #显示行号
    -c #统计匹配后的行数
    --color #标记匹配的内容
    -o #输出匹配的内容
    

    (4)sed命令

    sed工作流程:读取-执行命令-显示;

    使用方式:

    Sed [-n][-e] ‘command’ files

    sed [-n] –f script files

    参数:

    -n #禁止显示所有输入内容,只显示经过sed处理的行(常用);
    -e #直接在命令列模式上进行 sed 的动作编辑,接要执行的一个或者多个命令;
    -f #执行含有sed 动作的文件 ;
    -r #sed 的动作支持的扩展正则(默认基础正则) 
    -i #直接修改读取的文件内容,不输出
    

    作用区域:默认情况下,sed命令会作用于文本数据的所有行,如果只想作用于某些行时,则需要使用在命令通过行号或者文本过滤的方式前指明作用区域。

    行号:m, +n表示从m行开始向下n行,m~n表示从m行开始的每n行。

    文本过滤:’ /pattern/ command’ 可以只在包含pattern的行中执行命令,

    命令:p复制,d删除,i插入,a追加,c行替换,y字符转换,w写入新文件,r读取文件,i反向执行,s替换,

    (5)cut命令

    cut命令可以处理列数据,是一个选取命令,可将文件种的每一行按照“字节”“字符”“字段”进行剪切,并将这些选取好的数据输出至标准输出。cut的格式:cut –[n]b file;cut –c file;cut –d[分隔符] –f[域] file。

    常用参数

    -d #指定分隔符
    -f #指定列
    -b #以字节为单位进行切割
    -c #以字符为单位进行切割
    -n #取消分割多字节字符,仅和-b标志一起使用。
    
    #Example
    cut -b 1 text1.txt
    cut -b 1.3.5 text1.txt
    cut -b 1-5 text1.txt 等同于cut -b -5 test1.txt
    cut -b 3- test1.txt
    cut -nb 3 test2.txt
    cut -c 1 test2.txt
    cut -d : -f 1
    

    (6)awk命令

    在shell知识里,如果把一个文档看做一张表,那么一行就是一个记录,一列就是一个域。awk是一门语言,按行处理数据,也就是按记录处理文本的,是一个强大的文本分析工具。

    其命令的基本方式:

    awk [option] '{pattern + action}' {filenames} # sometims muti file is ok
    awk [option] 'BEGIN{初始代码} {循环代码} END{最后代码}' filename
    

    常见变量

    FS #字段分隔符(默认是任何空格)
    NR #行号,从1开始
    NF #一条记录的字段数目
    $n #当前记录的第n个字段,字段间由FS分隔
    $0 #完整的输入记录
    

    常见的基本用法(参考awk相关书籍)

    5、软件安装

    在生物信息学领域,现在用的最多的是conda进行软件安装

    (1) 下载miniconda

    wget –c <https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.5.4-Linux-x86_64.sh>
    

    (2) 安装miniconda

    bash [Miniconda3-4.5.4-Linux-x86_64.sh](https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-4.5.4-Linux-x86_64.sh)  #(不要将conda加入到环境变量里面,以免污染配置好的环境)
    

    (3) 启动miniconda

    source ~/miniconda3/bin/activate
    

    (4) 配置conda的环境

    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/ #(非常重要)
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
    

    (5) 查看conda的配置文件

    vim ~/.condarc
    

    (6) 安装软件(可以在bioconda.github.io搜索)

    conda install -y bwa(samtools=1.8)
    

    (7) 创建新的环境

    conda create -n chipseq python=2
    

    (8) 启动和退出chipseq的环境

    conda activate chipseq
    conda deactivate
    

    (9) 删除环境

    conda remove –n chipseq –all #或者
    $rm –rf ~/miniconda3/envs/chipseq/
    

    6、环境变量和局部变量

    (1) 查看环境变量

    Env或者export
    

    (2) 显示变量值:echo 变量名,变量名之前一定要有,echo才能将变量名替换成实际变量值

    echo $PATH
    

    (3) 配置环境变量

    #第一种方法
    export PATH=/usr/local/webserver/mysql/bin:$PATH ## 先添加
    echo $PATH        ### 再查看
    #第二种方法
    vim ~/.bashrc
    export PATH="/home/vip5/soft/gatk/bin:$PATH" #在最后添加
    source ~/.bashrc
    

    习题

    fasta和fastq文件

    1. 统计reads_1.fq 文件中共有多少条序列信息
    reads_1.fq |paste - - - - |wc
    
    1. 输出所有的reads_1.fq文件中的标识符(即以@开头的那一行)
    less -S reads_1.fq |grep ^@|wc
    less -S reads_1.fq |paste - - - - |cut -f 1|wc
    
    1. 输出reads_1.fq文件中的 所有序列信息(即每个序列的第二行)
    less -S reads_1.fq |paste - - - - |cut -f 2
    
    1. 输出以‘+’及其后面的描述信息(即每个序列的第三行)
    less -S reads_1.fq |paste - - - - |cut -f 3
    
    1. 输出质量值信息(即每个序列的第四行)
    less -S reads_1.fq |paste - - - - |cut -f 4
    
    1. 计算reads_1.fq 文件含有N碱基的reads个数
    less -S reads_1.fq |paste - - - - |cut -f 2|grep N|wc
    
    1. 统计文件中reads_1.fq文件里面的序列的碱基总数
    reads_1.fq |paste - - - - |cut -f 2|grep -o [ATCGN]|wc
    
    1. 计算reads_13.fq 所有的reads中N碱基的总数
    less -S reads_1.fq |paste - - - - |cut -f 2|grep -o N|wc
    
    1. 统计reads_1.fq 中测序碱基质量值恰好为Q20的个数
    less -S reads_1.fq |paste - - - - |cut -f 2|grep -o B|wc
    
    1. 统计reads_1.fq 中测序碱基质量值恰好为Q30的个数
    less -S reads_1.fq |paste - - - - |cut -f 2|grep -o F|wc
    
    1. 统计reads_1.fq 中所有序列的第一位碱基的ATCGN分布情况
    less -S reads_1.fq |paste - - - - |cut -f 2|grep -o ^[ATCGN]|sort|uniq -c
    
    1. 将reads_1.fq 转为reads_1.fa文件(即将fastq转化为fasta)
    less -S reads_1.fq|paste - - - -|cut -f1,2|tr "\t" "\n"|tr "@" ">" >read_1.fa
    
    1. 统计上述reads_1.fa文件中共有多少条序列
    awk 'NR%2==0{print $0}' read_1.fa |wc
    
    1. 计算reads_1.fa文件中总的碱基序列的GC数量
    less -S read_1.fa |paste - - |cut -f 2|grep -o [GC]|wc
    
    1. 删除 reads_1.fa文件中的每条序列的N碱基
    less -S read_1.fa |paste - - |cut -f 2|sed 's/N//'
    tr -d N read_1.fa
    
    1. 删除 reads_1.fa文件中的含有N碱基的序列
    awk 'NR%2==0{print $0}' read_1.fa|grep -v N|tr “\t” “\n”
    cat read_1.fa|paste - -|grep -v N|tr “\t” “\n”
    
    1. 删除 reads_1.fa文件中的短于65bp的序列
    awk 'NR%2==0{print $0}' read_1.fa|awk 'length($0)>64{print $0}'
    cat read_1.fa|paste - -| awk 'length($0)>64{print $0}'|tr '\t' '\n'
    
    1. 删除 reads_1.fa文件每条序列的前后五个碱基
    awk 'NR%2==0{print $0}' read_1.fa|sed 's/^.....//'|sed 's/.....$//'
    
    cat read_1.fa|paste - -|cut -f 1 >reads_1_1.fa
    awk 'NR%2==0{print $0}' read_1.fa|sed 's/^.....//'|sed 's/.....$//' >reads_1_2.fa
    paste reads_1_1.fa reads_1_2.fa|tr '\t' '\n' >reads_1_3.fa
    
    sed -n '1~4 p' reads_1.fq | tr "@" ">" >read_1_1.fa
    sed -n '2~4 p' reads_1.fq | sed 's/^.\{5\}//g' | sed 's/.\{5\}$//g' > read_1_2.fa
    paste read_1_1.fa read_1_2.fa | tr '\t' '\n' > reads_1.fa
    
    less -S read_1.fa |awk '{if($0~/^>/)print $0;else print substr($0,6,length($0)-10)}'|less -S
    

    19)删除 reads_1.fa文件中的长于125bp的序列

    awk 'NR%2==0{print $0}' read_1.fa|awk 'length($0)<125{print $0}'
    cat read_1.fa|paste - -| awk 'length($0)<125{print $0}'|tr '\t' '\n
    
    1. 查看reads_1.fq 中每条序列的第一位碱基的质量值的平均值
    perl -lane '{ord()}' tmp.fa
    

    sam文件和bam文件

    1. 统计共多少条reads(pair-end reads这里算一条)参与了比对参考基因组
    cat tmp.sam |grep -v ^@|wc
    
    1. 统计共有多少种比对的类型(即第二列数值有多少种)及其分布。
    cat tmp.sam |grep -v ^@|cut -f 2|sort |uniq –c 
    
    1. 筛选出比对失败的reads,看看序列特征。
    less tmp.sam |awk '$6=="*"{print $0}' >tmp_unmap.sam
    
    1. 比对失败的reads区分成单端失败和双端失败情况,并且拿到序列ID
    less -S tmp.sam |awk '$6=="*"{print $1}'|sort|uniq -c|grep -W 1 #单端
    less -S tmp.sam |awk '$6=="*"{print $1}'|sort|uniq -c|grep -W 2 #双端
    
    1. 筛选出比对质量值大于30的情况(看第5列)
    less -S tmp.sam |awk '$5>30{print $0}'
    
    1. 筛选出比对成功,但是并不是完全匹配的序列
    less -S tmp.sam |awk '$6~"[IDNSHPX]"{print $0}' 
    less -S tmp.sam |awk '$6!="*"{print $6}'|grep [IDNSHPX]
    
    1. 筛选出inset size长度大于1250bp的 pair-end reads
    less -S tmp.sam|awk '$9>1250{print $0}'
    
    1. 统计参考基因组上面各条染色体的成功比对reads数量
    less -S tmp.sam |grep  '^@'|grep 'LN'
    
    1. 筛选出原始fq序列里面有N的比对情况
    less -S tmp.sam |grep -v '^@'|awk '{print $10}'|grep N
    less -S tmp.sam |grep -v '^@'|awk '$10~"N"{print$10}'
    
    1. 筛选出原始fq序列里面有N,但是比对的时候却是完全匹配的情况
    less -S tmp.sam |grep -v '^@'|awk '$6!~"[IDNSHPX]" && $$6!="*" && $10~"N"{print $0}'|less -S
    
    1. sam文件里面的头文件行数
    less -S tmp.sam|grep -c '^@'
    
    1. sam文件里每一行的tags个数一样吗
    less -S tmp.sam|cut -f 12-20|less -S
    
    1. sam文件里每一行的tags个数分别是多少个
    less -S tmp.sam |grep -v '^@'|awk '{print NF}'|sort |uniq -c #结果减去11
    
    1. sam文件里记录的参考基因组染色体长度分别是?
    less -S tmp.sam |grep  '^@'|grep 'LN'
    
    1. 找到比对情况有insertion情况的
    less -S tmp.sam |grep -v '^@'|awk '$6~"I"{print$0}'
    
    1. 找到比对情况有deletion情况的
    less -S tmp.sam |grep -v '^@'|awk '$6~"D"{print$0}'
    

    17)取出位于参考基因组某区域的比对记录,比如 5013到50130 区域

    less -S tmp.sam |grep -v '^@'|awk '$8>5013 && $8<50130{print $0}'|less -S
    
    1. 把sam文件按照染色体以及起始坐标排序
    sort -k 3,3 -k 4,4n tmp.sam|less -S #对第3列进行字母排序后对第4列进行数值排序(升序)
    
    1. 找到 102M3D11M 的比对情况,计算其reads片段长度。
    less -S tmp.sam |grep -v '^@'|grep 102M3D11M|cut -f 10|wc
    
    1. 安装samtools软件后使用samtools软件的各个功能尝试把上述题目重新做一遍。

    生信人的linux考试

    一、在任意文件夹下面创建形如 1/2/3/4/5/6/7/8/9 格式的文件夹系列。

    mkdir -p 1/2/3/4/5/6/7/8/9
    

    二、在创建好的文件夹下面,比如我的是 /Users/jimmy/tmp/1/2/3/4/5/6/7/8/9 ,里面创建文本文件 me.txt

    touch /Users/jimmy/tmp/1/2/3/4/5/6/7/8/9/me.txt
    

    三、在文本文件 me.txt 里面输入内容:

    Go to: http://www.biotrainee.com/
    I love bioinfomatics.
    And you ?

    vim me.txt
    Go to: http://www.biotrainee.com/
    I love bioinfomatics.
    And you ?
    :wq
    

    四、删除上面创建的文件夹 1/2/3/4/5/6/7/8/9 及文本文件 me.txt

    rm -r 1/
    

    五、在任意文件夹下面创建 folder1~5这5个文件夹,然后每个文件夹下面继续创建 folder1~5这5个文件夹

    mkdir -p folder{1..5}/folder{1..5}
    

    六、在第五题创建的每一个文件夹下面都 创建第二题文本文件 me.txt ,内容也要一样。

    echo folder{1..5}/folder{1..5}|xargs -n 1|while read id;do cp me.txt $id; done
    

    七,再次删除掉前面几个步骤建立的文件夹及文件

    rm -r *
    

    八、下载 http://www.biotrainee.com/jmzeng/igv/test.bed 文件,后在里面选择含有 H3K4me3 的那一行是第几行,该文件总共有几行。

    wget http://www.biotrainee.com/jmzeng/igv/test.bed
    less -S test.bed|grep -n 'H3K4me3'
    wc test.bed
    

    九、下载 http://www.biotrainee.com/jmzeng/rmDuplicate.zip 文件,并且解压,查看里面的文件夹结构

    wget http://www.biotrainee.com/jmzeng/rmDuplicate.zip
    unzip rmDuplicate.zip 
    tree rmDuplicate
    

    十、打开第九题解压的文件,进入 rmDuplicate/samtools/single 文件夹里面,查看后缀为 .sam 的文件,搞清楚 生物信息学里面的SAM/BAM 定义是什么。

    cd rmDuplicate/samtools/single
    ls *.sam
    

    sam文件为fastq比对后得到的文件

    bam文件为sam文件的二进制格式,文件较小,易于储存

    十一、安装 samtools 软件

    conda install -y samtools
    

    十二、打开 后缀为BAM 的文件,找到产生该文件的命令。

    samtools view tmp.rmdup.bam
    samtools view -bS abc.sam -o abc.bam
    

    十三题、根据上面的命令,找到我使用的参考基因组 /home/jianmingzeng/reference/index/bowtie/hg38具体有多少条染色体。

    less -S /home/jianmingzeng/reference/index/bowtie/hg38|cut -f 1|sort|uniq
    

    十四题、上面的后缀为BAM 的文件的第二列,只有 0 和 16 两个数字,用 cut/sort/uniq等命令统计它们的个数。

    less -S .bam|cut -f 2|grep -w ['0'16']|sort|uniq -c
    

    十五题、重新打开 rmDuplicate/samtools/paired 文件夹下面的后缀为BAM 的文件,再次查看第二列,并且统计。

    cd rmDuplicate/samtools/paired` 
    samtools view tmp.rmdup.bam |wc
    samtools view tmp.sorted.bam |wc
    

    十六题、下载 http://www.biotrainee.com/jmzeng/sickle/sickle-results.zip 文件,并且解压,查看里面的文件夹结构, 这个文件有2.3M,注意留心下载时间及下载速度。

    wget http://www.biotrainee.com/jmzeng/sickle/sickle-results.zip
    unzip sickle-results.zip
    tree sickle-results
    

    十七题、解压 sickle-results/single_tmp_fastqc.zip 文件,并且进入解压后的文件夹,找到 fastqc_data.txt 文件,并且搜索该文本文件以 >>开头的有多少行?

    cd sickle-results/
    unzip single_tmp_fastqc.zip
    cd single_tmp_fastqc
    less -S fastqc_data.txt|grep -c ^'>>'
    

    十八题、下载 http://www.biotrainee.com/jmzeng/tmp/hg38.tss 文件,去NCBI找到TP53/BRCA1等自己感兴趣的基因对应的 refseq数据库 ID,然后找到它们的hg38.tss 文件的哪一行。

    wget http://www.biotrainee.com/jmzeng/tmp/hg38.tss
    TP53的基因ID:NM_000546,NM_001126112,NM_001126113,NM_001126114,NM_001126115,NM_001126116,NM_001126117,NM_001126118,NM_001276695
    less -S hg38.tss|grep -n -e NM_000546 -e NM_001126112
    

    十九题、解析hg38.tss 文件,统计每条染色体的基因个数。

    less -S hg38.tss|cut -f 2|grep -v '_'|sort|uniq -c
    

    二十题、解析hg38.tss 文件,统计NMNR开头的熟练,了解NMNR开头的含义。

    less -S hg38.tss|grep -c ^'NM'
    less -S hg38.tss|grep -c ^'NR'
    

    NM为转录本并可以翻译成蛋白

    NR为转录本但不能翻译成蛋白

    相关文章

      网友评论

        本文标题:Linux笔记及习题

        本文链接:https://www.haomeiwen.com/subject/rukmcqtx.html