文本编辑sed

2022-10-25 19:26:06 浏览数 (3)

一、软件介绍

sed 全称是 Stream EDitor,是一种流编辑器,什么是流编辑器呢。也就是相当于一个格式化的工具。当数据流过这个工具时,都被格式化成固定的格式。比如一个流水线中的一个模具,原材料是各种形状的,但是结果模具处理之后都变成同一的形状。这就是流编辑器。sed 默认一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。原文件内容并没有改变。sed 主要用来自动编辑一个或多个文件,简化对文件的反复操作。而不需要编写转换程序来完成。

二、命令大全

代码语言:javascript复制
#1 输出固定的行
cat -n demo.fasta | sed -n '1307p'
cat -n demo.fasta | sed -n '100,200p'

#2 替换操作
grep ">" demo.fasta | sed -e 's/gi/GI/' | head 
sed -i 's/gi/GI/g' demo.fasta  
sed -i.bak 's#GI#gi#' demo.fasta #改后生成新的文件bak后缀 
grep ">" demo.fasta | sed -e 's/|/#/2;s/ref/REF/' | head

#3 打印发生替换的行
sed -n 's/gi/GI/p' demo.fasta 

#4 同时进行多条件替换;
sed -f sed.list demo.fasta  

#5 使用正则表达式替换,空格后一串字符删除掉
grep ">" demo.fasta | sed -e 's/ .*//g' | head
#使用正则表达式替换,冒号后一串字符删除掉
grep ">" demo.fasta | sed -e 's/:.*//g' | head

#6 行首添加内容
sed -e 's/^/time /g' test.bed 

#7 行尾追加内容
sed -e '$a the end of file' test.bed
#直接修改
sed -i '$a ###the end of file###' test.bed

#8 行寻址
sed -n '/ref/p' demo.fasta  
grep ">" demo.fasta | cat -n | sed -n '100,200 s/gi/GI/gp'
grep ">" demo.fasta | cat -n | sed -n '100,200!s/gi/GI/gp'

#9 删除操作
sed -e '/>/d' demo.fasta #删除包含>的行;

#10 删除空白行,比较常用
sed -e '/^s*$/d'  demo.fasta

#11 对应替换 A-a
sed -e 'y/ATCG/atcg/' demo.fasta 
sed -e '/>/!y/ATCG/atcg/' demo.fasta  #不处理>行

#12 DNA序列反向互补配对,并修改大小写
sed -e '/>/!y/ATCG/tagc/' demo.fasta  

#13 fastq转换为fasta
zcat demo.fastq.gz | sed '0~4d' | sed '0~3d;s/^@/>/1' 

写在最后:有时间我们会努力更新的。大家互动交流可以前去论坛,地址在下面,复制去浏览器即可访问,弥补下公众号没有留言功能的缺憾。原地址暂未启用(bioinfoer.com)。

代码语言:javascript复制
sx.voiceclouds.cn

有些板块也可以预设为大家日常趣事的分享等,欢迎大家来提建议。

1 人点赞