我正在尝试编辑一些fastq文件。
本质上,我想更改:
@SRX1409044.10.1 10 length=80
至:
@SRX1409044.10/1 10 length=80
对于.1
文件中包含的每一行。
我试过使用sed:
sed 's#.1#/1#g'
它适用于大多数行,但是适用于以下行:
@SRX1409044.11.1 11 length=80
我得到:
@SRX1409044./1/1 /1 length=80
我到处搜寻了,我想我可能必须逃脱特殊字符?我碰到的每篇帖子都只给出了自己交换特殊字符的示例,因此我不太确定该怎么做。
此命令将每行的第一次出现.1
(点号后跟a1
和一个空格)更改为/1
–注意转义.
:
sed 's|\.1 |/1 |' infile
对于示例输入文件,例如
@SRX1409044.10.1 10 length=80
@SRX1409044.12.1 10 length=80
@SRX1409044.14.1 10 length=80
@SRX1409044.15.1 10 length=80
@SRX1409044.990.1 10 length=80
结果是
@SRX1409044.10/1 10 length=80
@SRX1409044.12/1 10 length=80
@SRX1409044.14/1 10 length=80
@SRX1409044.15/1 10 length=80
@SRX1409044.990/1 10 length=80
现在,如果.1
也可能在一行的末尾,我们必须稍稍更改命令,因为此刻我们需要一个空格:
sed 's#\.1\( \|$\)#/1\1#' infile
这是“.1
后跟一个空格或该行的末尾,替换为/1
以及后面的任何内容.1
”。例如:
$ sed 's#\.1\( \|$\)#/1\1#' <<< 'SRX1409044.116884523.1'
SRX1409044.116884523/1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句