模式匹配后删除1行的Sed命令(显示错误:替换命令中的错误标志:',')

时间:2016-01-15 05:36:18

标签: bash sed

我一直在我的Mac电脑上尝试以下命令,删除2行(包括包含图案的行和连续行)

   sed -i '' -e "s/.*GAII02_0001:1:15:14342:18862#0/1.*/ , +1d"  output.fa new.fa

但我收到以下错误:

`sed: 1: "s/.*GAII02_0001:1:15:14 ...": bad flag in substitute command: ','`

示例输入:

  

GAII02_0001:1:94:1703:4111#0/1   ATTTAGGGATTTAAGGATTAAGGATTAAGGATCCAGAGATTTAGGGATTTA   GAII02_0001:1:15:14342:18862#0/1   TTAGAGATTTAGGGATTTAGGGATATAGGGATTTAGTGATTTAGGGATTTA   GAII02_0001:1:7:12506:5001#0/1   AATCCCTAAATCTCTGGATCCTTAATCCTTAATCCTTAAATCCCTAAATCC

示例输出:

  

GAII02_0001:1:94:1703:4111#0/1   ATTTAGGGATTTAAGGATTAAGGATTAAGGATCCAGAGATTTAGGGATTTA   GAII02_0001:1:7:12506:5001#0/1   AATCCCTAAATCTCTGGATCCTTAATCCTTAATCCTTAAATCCCTAAATCC

3 个答案:

答案 0 :(得分:2)

您可以使用

 sed '/GAII02_0001:1:15:14342:18862#0\/1/{N;d;}' foo.txt

这将为您提供所需的输出

GAII02_0001:1:94:1703:4111#0/1
ATTTAGGGATTTAAGGATTAAGGATTAAGGATCCAGAGATTTAGGGATTTA
GAII02_0001:1:7:12506:5001#0/1
AATCCCTAAATCTCTGGATCCTTAATCCTTAATCCTTAAATCCCTAAATCC

这样做是使用N将下一行附加到模式空间,然后使用d删除这两行。

答案 1 :(得分:1)

如果您在比赛后阅读下一行

,则可以删除两行

另请注意,我已经转义搜索字符串中的/,否则会终止表达式。

而且你输入了它作为替换,它只是一个匹配器

$ sed -e "/.*GAII02_0001:1:15:14342:18862#0\/1.*/{N;d;}" testfile
GAII02_0001:1:94:1703:4111#0/1
ATTTAGGGATTTAAGGATTAAGGATTAAGGATCCAGAGATTTAGGGATTTA
GAII02_0001:1:7:12506:5001#0/1
AATCCCTAAATCTCTGGATCCTTAATCCTTAATCCTTAAATCCCTAAATCC

答案 2 :(得分:0)

试试这个:

sed -i.bak '/GAII02_0001:1:15:14342:18862#0\/1./,+1d' file

由' /'引起的错误在模式中。逃避它将是工作..

-i.bak将使用新文件file.bak备份您的文件。关心元数据~~

不要介意我的英语。 (: