通过对行的迭代来交换脚本中的行

Swap lines in a script by iteration over lines

这是我的文件:

>ref
AAAAAAA
>seq1
BBBBBBB
>ref
AAAAAAA
>seq2
CCCCCCC
>ref
AAAAAAA
>seq3
DDDDDDD
...

这是我想要得到的:

>seq1
AAAAAAA
>ref
BBBBBBB
>seq2
AAAAAAA
>ref
CCCCCCC
>seq3
AAAAAAA
>ref
DDDDDDD
...

因此,将第 1 行与第 3 行、第 5 行与第 7 行、第 9 行与第 11 行交换,等等。 任何关于我如何做的建议(在 bash、perl 或 python 中)将不胜感激! :)

从命令行使用 perl,

perl -ne 'push @r, $_; print(@r[2,1,0,3]), @r=() if @r==4 or eof' file

这是python2.7

在这里逐行查看输入文件。如果该行是 ref,它会将其替换为带有 运行 数字的 seq。其他线路保持不变。

fo = open("input.txt", "r")
calc = 1
ref = "ref"
seq = "seq"

for lines in fo:
    lines = lines.strip()
    if "ref" in lines:
        lines = seq + str(calc)
        calc = int(calc) +1 
        print lines
    elif "seq" in lines:
        print ref
    else:
         print lines

输出:

seq1
AAAAAAA
ref
BBBBBBB
seq2
AAAAAAA
ref
CCCCCCC
seq3
AAAAAAA
ref
DDDDDDD