我有一个这样的文件。
M00425_ght_cgd2_2212_B_0_2 (newline)
ATGCCGTTAGAGCTAG
M00425_ght_cgd2_2213_B_0_3_1 (newline)
GTACATTGACATAGAGTACATAGCGA
我想要一个这样的文件:
M00425_ght_cgd2_2212_B_0_2(tab)ATGCCGTTAGAGCTAG
M00425_ght_cgd2_2213_B_0_3_1(tab)GTACATTGACATAGAGTACATAGCGA
有人可以帮忙吗?
答案1
简单sed
命令:
sed '$!N;s/\n/\t/' inputfile.txt > outputfile.txt
这意味着用制表符分隔符连接每对行。
此命令使用命令连接两个连续的行N
。它们之间用一个字符连接\n
。替换命令用制表符替换此换行符,从而用制表符分隔符连接每对行。
这也看起来像这个sed '/$/N;s/\n/\t/' inputfile.txt
命令。
如果您的文件包含空行,您可以先使用以下sed
命令删除所有行:
sed -i '/^$/d' inputfile.txt
答案2
这与 Jacob 的回答类似,但又有很大不同,所以我认为值得一提。您可以检查行中是否包含除“GACT”之外的字符,而不是搜索字符串是否存在。
#!/usr/bin/env python
with open('input.txt','r') as f:
lines = f.readlines()
for i in range(0,len(lines)):
if len(lines[i].strip('GACT\n'))>0:
lines[i] = lines[i].replace('\n','\t')
with open('output.txt','w') as f:
f.writelines(lines)
如果您的文件不满足替换行中唯一标识符的要求,您也可以做出不同的假设。以下假设对于每个奇数行,您希望用制表符替换换行符,而对于每个偶数行,您则不这样做。
#!/usr/bin/env python
with open('input.txt','r') as f:
lines = f.readlines()
for i in range(0,len(lines)):
if i/2==i/2.0:
lines[i] = lines[i].replace('\n','\t')
with open('output.txt','w') as f:
f.writelines(lines)
例如,您可以将其另存为,lines2tabs.py
然后使用 导航到终端中的目录cd
并使用 运行它python lines2tabs.py
。请注意,您必须更改input.txt
为文件的名称。