这是我的文件:
>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
这是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