生信(七)生信中常用命令

今天将生信工作中的一些常用命令记录(分享)如下:
(以后会不定期更新)

转换dos/windows格式的bed文件为unix格式
(说明:我们拿到的bed文件时常是客户在Windows系统下编辑好的,其行尾是\r\n,在进行NGS分析前最好将其转换为Unix风格的行尾\n。)
在这里插入图片描述
可以看出上面的dos.bed.txt是一个dos风格(^MKaTeX parse error: Can't use function '\r' in math mode at position 3: ,即\̲r̲\n结尾)的文件。要想转换成u…,即\n结尾)的文件,当然可以用dos2unix命令来完成:

 dos2unix –n dos.bed.txt unix.bed.txt

在这里插入图片描述
可以看到转换成功。问题在于dos2unix命令往往不是系统默认安装的,你要自行安装后才可以使用。一个替代的方法是用sed命令。

sed ‘s/\r//’ dos.bed.txt > unix.bed.txt

在这里插入图片描述
可以看到,转换效果是一样的。

批量删除一个目录及其子目录下的bam文件

find your_path –name *.bam –exec rm {} \;

在这里插入图片描述

合并两个fastq文件

cat fastq1 fastq2 > merged_fastq

获取fastq文件名前缀
(假设fastq文件名是test.r1.fq.gz,我们想得到其前缀test)

your_string | cut –d. –f1

在这里插入图片描述
或者:

your_string | sed ‘s/\..*//’

在这里插入图片描述
或者:

your_string | awk –F. ‘{print $1}’

在这里插入图片描述
或者(如果是在脚本中实现这一功能的话):
利用shell中的字符串变量删除功能 ${var%%} 来实现。
在这里插入图片描述

打包并压缩项目文件

tar zcvf tar_file origin_files

打印行号

sed ‘=’ your_file | sed ‘N;s/\n/\t/’

在这里插入图片描述
或者:

awk ‘{printf(“%d\t%s\n”, NR, $0)}’ your_file

在这里插入图片描述

输出指定的行数
(比如第666行)

sed –n ‘666p;666d’ your_file

在这里插入图片描述
或者:

awk ‘NR==666{print $0; exit}’ your_file

在这里插入图片描述

统计不重复的基因个数
(假设基因名在第一列)

awk ‘{print $1}’ your_file | sort -u | wc –l

在这里插入图片描述
或者

awk ‘{a[$1]++} END {print length(a)}’ your_file

在这里插入图片描述

找出表达量最高的基因
(假设基因名在第一列,表达量数据在第四列)

sort –k4,4nr your_file | head -1 | cut –f1

在这里插入图片描述
或者(如果仅仅是找出最高表达量的基因,下面的方法更快!因为它不对所有记录排序):

awk ‘{if(max<$4){max=$4;gene=$1}} END {print gene}’ your_file

在这里插入图片描述

打印最后一列

awk ‘{print $NF}’ your_file

反向互补序列
(如”agctn”的反向互补序列应该是”nagct”)

your_string | tr ‘agctnAGCTN’ ‘tcganTCGAN’ | rev

在这里插入图片描述

或者:

your_string | sed ‘y/agctnAGCTN/tcganTCGAN/’ | rev

在这里插入图片描述

求取某一列平均值
(假设求第四列的平均值)

awk ‘{x+=$4} END {print x/NR}’ your_file

在这里插入图片描述
如果是压缩文件,则需利用zcat来生成“流”:

zcat your_zipped_file | awk ‘{x+=$4} END {print x/NR}’

获取脚本文件所在目录的绝对路径
(假设你有一个脚本test.sh,你想在该脚本里写几行代码获取test.sh所在目录的绝对路径)

abs_path=$(cd “$(dirname “$0”)”; pwd)
echo $abs_path

在这里插入图片描述

对bed文件排序
(假设依次按照前三列进行排序)

sort –k1,1V –k2,2n –k3,3n unsort.bed > sort.bed

最后提一句:从上面的诸多例子中,我们可以看出,sed与awk的威力。它们与grep并称Linux下的“三剑客”,牛叉哄哄!

下面的《sed与awk在线手册》是我一直想安利给大家的,网址如下(强烈推荐):
https://github.com/LinuxTOY/linuxtoy.org/blob/master/content/sed-awk.md

如果有任何意见或建议,欢迎留言!

公众号:生信了
在这里插入图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值