通过迭代在线上交换脚本中的行

时间:2015-04-23 11:54:33

标签: python bash perl swap

这是我的档案:

>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中)将不胜感激! :)

2 个答案:

答案 0 :(得分:1)

从命令行使用perl,

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

答案 1 :(得分:1)

这是python 2.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