【问题标题】:Hot to trim every nth line by a different value?热切每第 n 行不同的值?
【发布时间】:2021-03-28 06:26:45
【问题描述】:

我想修剪每 4 行的最后一个 XY 字符。截断应该是第 4 行和第 2 行以及第 8 行和第 6 行的字符数之间的差异。

例如:第 4 行(29 个字符)-第 2 行(20 个字符)= 9。所以第 4 行的最后 9 个字符应该被删除。

输入:

@V300059044L3C001R0010004402
AAGTAGATATCATGGAGCCG
+
FFFGFGGFGFGFFGFFGFFGGGGGFFFGG
@V300059044L3C001R0010009240
AAAGGGAGGGAGAATAAT
+
GFFGFEGFGFGEFDFGGEFFGGEDEGEGF

输出:

@V300059044L3C001R0010004402
AAGTAGATATCATGGAGCCG
+
FFFGFGGFGFGFFGFFGFFG
@V300059044L3C001R0010009240
AAAGGGAGGGAGAATAAT
+
GFFGFEGFGFGEFDFGGE

【问题讨论】:

    标签: awk trim cut fastq


    【解决方案1】:

    跑步

    awk 'NR%4==0 {$0=substr($0,1,a)} NR%2==0 {a=length($0)}  {print $0}' input.txt
    

    input.txt 产量

    @V300059044L3C001R0010004402
    AAGTAGATATCATGGAGCCG
    +
    FFFGFGGFGFGFFGFFGFFG
    @V300059044L3C001R0010009240
    AAAGGGAGGGAGAATAAT
    +
    GFFGFEGFGFGEFDFGGE
    

    【讨论】:

    • 非常感谢!!!此命令默认删除行尾的字符?
    • 字符仅在每 4 行删除一次
    • 是的,但是为什么这个命令从第 4 行的末尾开始删除它们。难道它也不能删除从行首开始的字符吗?
    • 不,substr 方法采用整行 $0 并保留从 1st 开始的 a 字符
    猜你喜欢
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 2018-01-09
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多