使用sed替换包含特殊字符的字符串
我正在尝试编辑一些fastq文件 基本上我想改变:使用sed替换包含特殊字符的字符串,sed,Sed,我正在尝试编辑一些fastq文件 基本上我想改变: @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 我已经四处搜索过了,我想我可能不得不逃离那些特殊的角色?我看到的每一篇文章都只给出了自己交换特殊字符的例子,所以我不太确定
@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
我已经四处搜索过了,我想我可能不得不逃离那些特殊的角色?我看到的每一篇文章都只给出了自己交换特殊字符的例子,所以我不太确定该怎么做。小数点
被转义为\。
我认为你的问题是你需要区分一位数和两位数
如果您的数字不超过2位,最简单的方法是重复regexp两次,如:
[0-9][0-9]
匹配任何2位数字或数字序列
- 因为我不知道您使用的是哪个版本的sed,它的增强功能是什么
此外,我不确定您要接受什么,也不确定您要拒绝什么。小数点
被转义为\。
我认为你的问题是你需要区分一位数和两位数
如果您的数字不超过2位,最简单的方法是重复regexp两次,如:
[0-9][0-9]
匹配任何2位数字或数字序列
- 因为我不知道您使用的是哪个版本的sed,它的增强功能是什么
另外,我不确定您要接受什么,以及要拒绝什么。此命令将每行上第一次出现的
.1
(一个点,后跟一个1
和一个空格)更改为/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
$sed的\\.1\(\\\$\)\\/1\1 \\'此命令将每行上第一次出现的.1
(一个点,后跟一个1
和一个空格)更改为/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
$sed的#\.1\(\\\$)\/1\1#“该文件从SRX1409044.1.1
到SRX1409044.116884523.1
我希望sed做的唯一更改是将末尾的.1更改为/1。我使用的是sed版本4.2.2(GNU sed)。该文件从SRX1409044.1.1
到SRX1409044.116884523.1
我希望sed做的唯一更改是将结尾处的.1更改为/1。我使用的是sed版本4.2.2(GNU sed)。sed's#\.1#/1#g'
?sed's#\.1#/1#g'
?