生信喵 发表于 2022-7-5 09:56:18

文本替换 sed

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





页: [1]
查看完整版本: 文本替换 sed