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

Python 通过对行的迭代交换脚本中的行,python,bash,perl,swap,fasta,Python,Bash,Perl,Swap,Fasta,这是我的档案: >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行交换,

这是我的档案:

>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

1) 选择一种语言2)展示你迄今为止的尝试,你必须为我们提供一个最简单的工作示例。这也有助于我们了解您在解决问题方面所做的努力。:)使用
awk
这是小菜一碟。在伪代码中,如果行包含“>ref”{store line header;next line;store line content;next line;next line;print“>ref”;打印当前行;打印存储行header;打印存储行content}”,则可以使用
awk'
Wowowoh,对不起,伙计们,我并没有说我已经尝试过的内容!我用Vim打开了我的文件,然后做了
:1m3 | 1m2 | 5m7 | 5m6 | 9m11 | 9m10
,但对于一个长文件来说,这样做有点像噩梦!这就是我想到另一个剧本的原因@贝类,我明白了,但是我对awk不够熟悉,吃不下这“蛋糕”;)在vim中录制一个宏,并根据需要执行多次。谷歌的宏维姆,它是一个救命稻草