sed 处理fasta/q 文件

sed 是一种流编辑器,它一次处理一行内容。
处理时,把当前处理的行存储在称为“模式空间”(pattern space)的临时缓冲区中,接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。

生成联系文件
leadingsci@DELL5577:~/Test$ cat df.txt
Filesystem Size Used Avail Use% Mounted on
rootfs 119G 57G 62G 48% /
tmpfs 119G 57G 62G 48% /run
none 119G 57G 62G 48% /run/lock
none 119G 57G 62G 48% /run/shm
none 119G 57G 62G 48% /run/user
替换
s 表示替换,将制表符 \t 替换为 ,;默认只替换第一个匹配的制表符。若想匹配第二个,则:

leadingsci@DELL5577:~/Test$ sed ‘s/\s/,/2’ df.txt

将第二列的G ,替换成为GB

leadingsci@DELL5577:~/Test$ sed ‘s/G/GB/2’ df.txt
Filesystem Size Used Avail Use% Mounted on
rootfs 119G 57GB 62G 48% /
tmpfs 119G 57GB 62G 48% /run
none 119G 57GB 62G 48% /run/lock
none 119G 57GB 62G 48% /run/shm
none 119G 57GB 62G 48% /run/user
全部替换
g 即为 global,意为全局替换。

leadingsci@DELL5577:~/Test$ sed -e ‘s/G/GB/g’ df.txt
Filesystem Size Used Avail Use% Mounted on
rootfs 119GB 57GB 62GB 48% /
tmpfs 119GB 57GB 62GB 48% /run
none 119GB 57GB 62GB 48% /run/lock
none 119GB 57GB 62GB 48% /run/shm
none 119GB 57GB 62GB 48% /run/user
删除
删除特定字符
删除n开头的字符

fasta中可以删除> 开头的字符

leadingsci@DELL5577:~/Test$ grep “^n” df.txt | sed ‘s/^n//’
one 119G 57G 62G 48% /run/lock
one 119G 57G 62G 48% /run/shm
one 119G 57G 62G 48% /run/user

/g效果一致

leadingsci@DELL5577:~/Test$ grep “^n” df.txt | sed ‘s/^n//g’
one 119G 57G 62G 48% /run/lock
one 119G 57G 62G 48% /run/shm
one 119G 57G 62G 48% /run/user
删除空行
正则,^$ 表示空行,放在 // 中表示在文件中匹配空行;d 为 delete,即删除;所以整体的意思就是将空行删除。

leadingsci@DELL5577:~/Test$ sed ‘/^$/d’ df.txt
Filesystem Size Used Avail Use% Mounted on
rootfs 119G 57G 62G 48% /
tmpfs 119G 57G 62G 48% /run
none 119G 57G 62G 48% /run/lock
none 119G 57G 62G 48% /run/shm
none 119G 57G 62G 48% /run/user
添加行
1i 表示在第一行之前插入一行(insertion),\t 表制表符。
1a 即在第一行之后追加一行(append)

leadingsci@DELL5577:~/Test$ sed ‘1iroot1\troot2\troot3\troot4’ df.txt
root1 root2 root3 root4
Filesystem Size Used Avail Use% Mounted on
rootfs 119G 57G 62G 48% /
tmpfs 119G 57G 62G 48% /run
none 119G 57G 62G 48% /run/lock
none 119G 57G 62G 48% /run/shm
none 119G 57G 62G 48% /run/user
显示指定行
显示第二行
-n 表示,不处理的行,不打印;p 即 print,2p 表示打印第二行。

leadingsci@DELL5577:~/Test$ sed -n ‘2p’ df.txt
rootfs 119G 57G 62G 48% /

显示指定区间内的行
第二到第四行

leadingsci@DELL5577:~/Test$ sed -n ‘2,4p’ df.txt
rootfs 119G 57G 62G 48% /
tmpfs 119G 57G 62G 48% /run
none 119G 57G 62G 48% /run/lock
按一定规律显示指定的行
打印第一行,第五行,到最后一行

leadingsci@DELL5577:~/Test$ sed -n ‘1~4p’ df.txt
Filesystem Size Used Avail Use% Mounted on
none 119G 57G 62G 48% /run/shm
打印第 1 行,然后跳过 4 行,打印第 5 行;如此循环到最后一行。在 fastq 中即为打印每条序列的 header。

$ zcat 1_SD_30_1.fq.gz | sed -n ‘1~4p’ | head -n 5

2~4 和 p 之间可以加上替换操作
将每行第一个G替换为GB

leadingsci@DELL5577:~/Test$ sed -n ‘2~4s/G/GB/p’ df.txt
rootfs 119GB 57G 62G 48% /
none 119GB 57G 62G 48% /run/user
$ zcat 1_SD_30_1.fq.gz | sed -n ‘1~4s/^@/>/p’ | head -n 5

将fastq打印为fasta
$ zcat 1_SD_30_1.fq.gz | sed -n ‘14s/^@/>/p;24p’ | head -n 5

ERR569754.4 9L6V3M1:265:C06M9ACXX:3:1101:6568:1985 length=101
CAGCATCACATATTAGGCTTTATCCCTTTAAAGCAATATATTTTGAAATATCAATTATCATTTTCATTTATGGCCCGTAGGGCATTGCAGGGCACAACG
ERR569754.7 9L6V3M1:265:C06M9ACXX:3:1101:10900:1974 length=101
TGCTGTTCATGGTGTTGTTGCTCTTGCTGTTGTTGTTGTTGCCCACGATGGGATCGCCGTTGATGGGGCCGTTAACGGGATTGCCATGAATCTTGGTGT
ERR569754.18 9L6V3M1:265:C06M9ACXX:3:1101:1157:2083 length=101
删除空格即其后的内容:

$ zcat 1_SD_30_1.fq.gz | sed -n ‘14s/^@/>/p;24p’ | sed ‘s/ .*//’ | head -n 5

ERR569754.4
CAGCATCACATATTAGGCTTTATCCCTTTAAAGCAATATATTTTGAAATATCAATTATCATTTTCATTTATGGCCCGTAGGGCATTGCAGGGCACAACG
ERR569754.7
TGCTGTTCATGGTGTTGTTGCTCTTGCTGTTGTTGTTGTTGCCCACGATGGGATCGCCGTTGATGGGGCCGTTAACGGGATTGCCATGAATCTTGGTGT
ERR569754.18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值