生信软件50 - 生物信息高效命令行数据分析awk+sed技巧

1. awk & sed基础命令

从 file.txt 中提取第 2、4、5 个字段

awk '{print $2,$4,$5}' input.txt

打印第 5 个字段等于 ‘abc123’ 的每一行

awk '$5 == "abc123"' file.txt

打印第 5 个字段不等于 ‘abc123’ 的每一行

awk '$5 != "abc123"' file.txt

打印第 7 个字段与正则表达式匹配的每一行

awk '$7  ~ /^[a-f]/' file.txt

打印第 7 个字段与正则表达式不匹配的每一行

awk '$7 !~ /^[a-f]/' file.txt

根据第 2 列获取 file.txt 中的唯一条目(只保留第一个实例)

awk '!arr[$2]++' file.txt

打印 file.txt 中第 3 列大于第 5 列的行

awk '$3>$5' file.txt

计算 file.txt 第 1 列的总和

awk '{sum+=$1} END {print sum}' file.txt

计算第 2 列的平均值

awk '{x+=$2}END{print x/NR}' file.txt

替换 file.txt 中所有的 foobar

sed 's/foo/bar/g' file.txt

去除 file.txt 中的前导空格和制表符

sed 's/^[ \t]*//' file.txt

去除 file.txt 中的尾随空格和制表符

sed 's/[ \t]*$//' file.txt

去除 file.txt 中的前导和尾随空格及制表符

sed 's/^[ \t]*//;s/[ \t]*$//' file.txt

删除 file.txt 中的空行

sed '/^$/d' file.txt

删除包含 error 的行及其之后的所有内容

sed -n '/error/,$!p' file.txt

2. awk & sed复杂命令

按染色体和坐标位置提取文本信息

从 file.txt 中返回 1 号染色体上位置在 1MB 到 2MB 之间的所有行(假设染色体在第 1 列,位置在第 3 列)。此逻辑也可用于返回等位基因频率高于特定值的变异)。

cat file.txt | awk '$1=="1"' | awk '$3>=1000000' | awk '$3<=2000000'

Reads指标统计

在 file.fq 中打印总 reads 数、总唯一 reads 数、唯一 reads 占比、最丰富的序列及其频率和占总 reads 的百分比:

cat sample.fq | awk '((NR-2)%4==0){read=$1;total++;count[read]++}END{for(read in count){if(!max||count[read]>max) {max=count[read];maxRead=read};if(count[read]==1){unique++}};print total,unique,unique*100/total,maxRead,count[maxRead],count[maxRead]*100/total}'

将 bam 文件转换为 fastq 文件

samtools view file.bam | awk 'BEGIN {FS="\t"} {print "@" $1 "\n" $10 "\n+\n" $11}' > file.fq

仅保留 BLAST 比对结果中最高的 bit 得分(只保留最佳 bit 得分)

awk '{ if(!x[$1]++) {print $0; bitscore=($14-1)} else { if($14>bitscore) print $0} }' blastout.txt

仅保留 BLAST 比对结果中接近最高的 bit 得分(比最高分低 5 以内):

awk '{ if(!x[$1]++) {print $0; bitscore=($14-6)} else { if($14>bitscore) print $0} }' blastout.txt

将多序列 FASTA 文件拆分为单个 FASTA 文件

awk '/^>/{s=++d".fa"} {print > s}' multi.fa

输出 FASTA 文件中每个序列的名称及其长度

cat file.fa | awk '$0 ~ ">" {print c; c=0;printf substr($0,2,100) "\t"; } $0 !~ ">" {c+=length($0);} END { print c; }'

将 FASTQ 文件转换为 FASTA 文件

sed -n '1~4s/^@/>/p;2~4p' file.fq > file.fa

从第 2 行FASTQ 文件中开始提取序列)

sed -n '2~4p' file.fq

打印除第一行外的所有内容

awk 'NR>1' input.txt

打印第 20 到 80 行

awk 'NR>=20&&NR<=80' input.txt

计算第 2 列和第 3 列的总和,并将其添加到每行的末尾

awk '{print $0,$2+$3}' input.txt

计算 FASTQ 文件中 reads 的平均长度

awk 'NR%4==2{sum+=length($0)}END{print sum/(NR/4)}' input.fastq

将 VCF 文件转换为 BED 文件

sed -e 's/chr//' file.vcf | awk '{OFS="\t"; if (!/^#/){print $1,$2-1,$2,$4"/"$5,"+"}}'

从 GENCODE GFF 文件创建制表符分隔的转录本 - 基因映射表

substr(x,s,n) 从字符串 x 的位置 s 开始返回 n 个字符,用于去除引号和分号

bioawk -c gff '$feature=="transcript" {print $group}' gencode.v28.annotation.gtf | awk -F ' ' '{print substr($4,2,length($4)-3) "\t" substr($2,2,length($2)-3)}' > txp2gene.tsv

根据 reads 名称从 FASTQ 文件中提取特定 reads

zcat a.fastq.gz | awk 'BEGIN{RS="@";FS="\n"}; $1~/readsName/{print $2; exit}'

统计 VCF 文件中每行缺失的样本数

bcftools query -f '[%GT\t]\n' a.vcf |  awk '{miss=0};{for (x=1; x<=NF; x++) if ($x=="./.") {miss+=1}};{print miss}' > nmiss.count

sort, uniq, cut, etc.

显示 file.txt 中的每行编号

cat -n file.txt

统计 file.txt 中唯一行的数量

cat file.txt | sort -u | wc -l

查找两个文件共有的行(假设 file1 和 file2 中的行都是唯一的;通过管道传递给 wc -l 可统计共有行的数量)

# 排序file1和file2,获取共有行
sort file1 file2 | uniq -d

# Safer
sort -u file1 > a
sort -u file2 > b
sort a b | uniq -d

# Use comm
comm -12 file1 file2

按第 9 列进行数值排序(包含日志值)

sort -gk9 file.txt

查找第 2 列中最常见的字符串

cut -f2 file.txt | sort | uniq -c | sort -k1nr | head

从文件中随机选择 10 行

shuf file.txt | head -n 10

打印所有可能的 3 碱基 DNA 序列组合

echo {A,C,T,G}{A,C,T,G}{A,C,T,G}

处理一个包含许多短 scaffolds 的 FASTA 文件

例如,标记为 >Scaffold12345,移除这些 scaffolds,并写入一个新的不含 scaffolds 的 FASTA 文件。

samtools faidx genome.fa && grep -v Scaffold genome.fa.fai | \
cut -f1 | xargs -n1 samtools faidx genome.fa > genome.noscaffolds.fa

生信软件文章推荐

生信软件1 - 测序下机文件比对结果可视化工具 visNano

生信软件2 - 下游比对数据的统计工具 picard

生信软件3 - mapping比对bam文件质量评估工具 qualimap

生信软件4 - 拷贝数变异CNV分析软件 WisecondorX

生信软件5 - RIdeogram包绘制染色体密度图

生信软件6 - bcftools查找指定区域的变异位点信息

生信软件7 - 多线程并行运行Linux效率工具Parallel

生信软件8 - bedtools进行窗口划分、窗口GC含量、窗口测序深度和窗口SNP统计

生信软件9 - 多公共数据库数据下载软件Kingfisher

生信软件10 - DNA/RNA/蛋白多序列比对图R包ggmsa

生信软件11 - 基于ACMG的CNV注释工具ClassifyCNV

生信软件12 - 基于Symbol和ENTREZID查询基因注释的R包(easyConvert )

生信软件13 - 基于sambamba 窗口reads计数和平均覆盖度统计

生信软件14 - bcftools提取和注释VCF文件关键信息

生信软件15 - 生信NGS数据分析强大的工具集ngs-bits

生信软件16 - 常规探针设计软件mrbait

生信软件17 - 基于fasta文件的捕获探针设计工具catch

生信软件18 - 基于docker部署Web版 Visual Studio Code

生信软件19 - vcftools高级用法技巧合辑

生信软件20 - seqkit+awk+sed+grep高级用法技巧合辑

生信软件21 - 多线程拆分NCBI-SRA文件工具pfastq-dump

生信软件22 - 测序数据5‘和3‘端reads修剪工具sickle

生信软件23 - Samtools和GATK去除PCR重复方法汇总

生信软件24 - 查询物种分类学信息和下载基因组TaxonKit和ncbi-genome-download

生信软件25 - 三代测序数据灵敏比对工具ngmlr

生信软件26 - BWA-MEM比对算法性能更好的bwa-mem2

生信软件27 - 基于python的基因注释数据查询/检索库mygene

生信软件28 - fastq与bam的reads数量计算与双端fastq配对检测工具fastq-pair

生信软件29 - 三代数据高效映射精确的长读段比对工具mapquik

生信软件30 - 快速单倍型分析工具merlin

生信软件31 - Bcftools操作VCF/BCF文件高级用法合集

生信软件32 - 变异位点危害性评估预测工具合集

生信软件33 - Wgsim生成双端(PE) fastq模拟数据

生信软件34 - 大幅提升Python程序执行效率的工具Pypy

生信软件35 - AI代码编辑器Cursor

生信软件36 - SAM/BAM/CRAM文件插入SNV/INDEL/SV工具Bamsurgeon

生信软件37 - 基于测序reads变异进行单倍型分型工具WhatsHap

生信软件38 - 基因型填充软件IMPUTE2

生信软件39 - GATK最佳实践流程重构,提高17倍分析速度的LUSH流程

生信软件40 - bedtools经典使用方法合集

生信软件41 - GATK经典使用方法合集

生信软件42 - 科研绘图R包神器tidyplots

生信软件43 - iGenomes批量下载Ensembl、NCBI、GATK和UCSC参考基因组和注释文件资源

生信软件44 - 比PyVCF更高效的VCF解析Python库cyvcf2

生信软件45 - 遗传变异分析工具GEMINI

生信软件46 - 三代测序低深度全基因组测序结构变异SV检测工具NanoVar

生信软件47 - 超低测序深度的全基因组测序cfDNA肿瘤分数估计工具ichorCNA

生信软件48 - 差异甲基化区域(DMR)识别的DNA 甲基化分析工具methylpy

生信软件49 - 全基因组亚硫酸氢盐测序(WGBS)比对与甲基化水平调用工具BSseeker2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信与基因组学

每一份鼓励是我坚持下去动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值