linux – 如何使用sed或Perl删除多行块中的部分行?
发布时间:2020-12-14 00:33:47 所属栏目:Linux 来源:网络整理
导读:我有一些看起来像这样的数据.它有四个块.每个块都以@字符开头. @SRR037212.1 FC30L5TAA_102708:7:1:741:1355 length=27AAAAAAAAAAAAAAAAAAAAAAAAAAA+SRR037212.1 FC30L5TAA_102708:7:1:741:1355 length=27::::::::::::::::::::::::;;8@SRR037212.2 FC30L5TAA
我有一些看起来像这样的数据.它有四个块.每个块都以@字符开头.
@SRR037212.1 FC30L5TAA_102708:7:1:741:1355 length=27 AAAAAAAAAAAAAAAAAAAAAAAAAAA +SRR037212.1 FC30L5TAA_102708:7:1:741:1355 length=27 ::::::::::::::::::::::::;;8 @SRR037212.2 FC30L5TAA_102708:7:1:1045:1765 length=27 TATAACCAGAAAGTTACAAGTAAACAC +SRR037212.2 FC30L5TAA_102708:7:1:1045:1765 length=27 888888888888888888888888888 在每个块的第三行,我想删除字符后面的文本,导致: @SRR037212.1 FC30L5TAA_102708:7:1:741:1355 length=27 AAAAAAAAAAAAAAAAAAAAAAAAAAA + ::::::::::::::::::::::::;;8 @SRR037212.2 FC30L5TAA_102708:7:1:1045:1765 length=27 TATAACCAGAAAGTTACAAGTAAACAC + 888888888888888888888888888 在sed或Perl中有一个紧凑的方法吗? 解决方法
如果第一行或第二行中永远不存在a并且第三行总是存在一个:
perl -0100pi -e's/+.*/+/' datafile 除此以外: perl -0100pi -e's/^((?:.*n){2}.*?+).*/$1/' datafile 或者在5.10上: perl -0100pi -e's/^(?:.*n){2}.*?+K.*//' datafile 所有那些假设@只出现在一个块的开头.如果它可能出现在其他地方,那么: perl -pi -e's/+.*/+/ if $. % 4 == 3' datafile (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |