【问题标题】:Headers edition with awk带有 awk 的标头版本
【发布时间】:2020-03-30 19:41:53
【问题描述】:

我有一个这样的文件:

@SRR5874687.1.171.2 length=100 1 /1
CACCGAACTGAAGACATGCGTCATCACCGAAGATTTCAACTAAAGCTGGCATGTGCCATACGTGAATACCACCTGAAGCAACTGGCATAACACCTGGCAT
+
@@@DFFDDHBFHDHGBFG@@C<@F>??CFHIH0??FFIGII<BBC@FCFCHGH.7777=D;AHEFB@?7;;>BEC;@CCCC??ACBCCCCCCC?CC@?CC
@SRR5874687.1.172.2 length=100 2 /1
CTGGACAACGCGCCGCAATATTGCAGCTTATTAGTTTGGTGATGAGAGGACTCGCGCAACCGGCACACGCGGTTTCAGCACGTGCACAACATGTACAGAC
+
?@@FBDDDFHDHHJJJIGHIIJJGGHIGI?FH<DFHJJJCF@GHFHGHIGHHEEEDDDDDDDDDDDDDD@BBBBDDEDDDDDBDDDDDDDDDDDEEEECB
@SRR5874687.1.173.2 length=100 3 /1
GTTAAAGTAGTATTGGTATTAAATTTTGTACGACGTGGGAAAATTAAACCATCTTTTTTAATAAAACGTTTTCTATGGTATTTACGACGTGGTTTAACAC
+
BBCDDDDDHHHHHJJJHIHJHJEJJJJJHEGGEHIHIJJGIHIFHGGEIGIHIIJJJJJIEHGEH@EEBDFFEED@CCCDCEFDDDBDD@DDBDDCCCC>

在文件中,我想编辑以“@SRR”开头的每一行。在常量语句“@SRR5874687.1.17X.2”之后的这一行中,其中 X 是一个在下一行中增加 1 的数字,我想添加空格和 X 后跟常量 /2,所以结果会像这个:“@SRR5874687.1.17X.2 X /2 长度=100”。 (例如:“@SRR5874687.1.171.2 1 /2 长度=100”和“@SRR5874687.1.172.2 2 /2 长度=100”)

我是使用 awk 和正则表达式的新手,但到目前为止我设法获得“@SRR5874687.1.17X.2 length=100 X /2”,我只是不知道如何将它放在“length=100”之前”。

我使用了awk方法:

awk '/^@SRR/{$0=$0" "(++i) " /2"}1' test.txt > out.txt

【问题讨论】:

    标签: awk


    【解决方案1】:

    你可以用你的字符串替换第一个空格字符:

    awk '/^@SRR/{sub(/ /, " " ++i " /2 ")}1' test.txt > out.txt
    

    【讨论】:

    • '/^@SRR/{$1=$1" "(++i) " /2")}1'。不过,我认为在这种特殊情况下使用哪种并不重要,我只是倾向于支持文字字符串操作。
    猜你喜欢
    • 2012-05-02
    • 2017-11-17
    • 2016-01-26
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    相关资源
    最近更新 更多