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 中所有的 foo 为 bar
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
生信软件3 - mapping比对bam文件质量评估工具 qualimap
生信软件4 - 拷贝数变异CNV分析软件 WisecondorX
生信软件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
生信软件17 - 基于fasta文件的捕获探针设计工具catch
生信软件18 - 基于docker部署Web版 Visual Studio Code
生信软件20 - seqkit+awk+sed+grep高级用法技巧合辑
生信软件21 - 多线程拆分NCBI-SRA文件工具pfastq-dump
生信软件22 - 测序数据5‘和3‘端reads修剪工具sickle
生信软件23 - Samtools和GATK去除PCR重复方法汇总
生信软件24 - 查询物种分类学信息和下载基因组TaxonKit和ncbi-genome-download
生信软件26 - BWA-MEM比对算法性能更好的bwa-mem2
生信软件27 - 基于python的基因注释数据查询/检索库mygene
生信软件28 - fastq与bam的reads数量计算与双端fastq配对检测工具fastq-pair
生信软件29 - 三代数据高效映射精确的长读段比对工具mapquik
生信软件31 - Bcftools操作VCF/BCF文件高级用法合集
生信软件33 - Wgsim生成双端(PE) fastq模拟数据
生信软件34 - 大幅提升Python程序执行效率的工具Pypy
生信软件36 - SAM/BAM/CRAM文件插入SNV/INDEL/SV工具Bamsurgeon
生信软件37 - 基于测序reads变异进行单倍型分型工具WhatsHap
生信软件39 - GATK最佳实践流程重构,提高17倍分析速度的LUSH流程
生信软件43 - iGenomes批量下载Ensembl、NCBI、GATK和UCSC参考基因组和注释文件资源
生信软件44 - 比PyVCF更高效的VCF解析Python库cyvcf2
生信软件46 - 三代测序低深度全基因组测序结构变异SV检测工具NanoVar
生信软件47 - 超低测序深度的全基因组测序cfDNA肿瘤分数估计工具ichorCNA
1236

被折叠的 条评论
为什么被折叠?



