Python 将文件头行快速插入列中
我有一个fasta文件,其中包含序列头及其相应的序列,如下所示:Python 将文件头行快速插入列中,python,unix,awk,sed,Python,Unix,Awk,Sed,我有一个fasta文件,其中包含序列头及其相应的序列,如下所示: >ID101_hg19 ATGGGTGTATCGTACCC >ID102_hg19 AGCTTTAGCGGGGTACA 我想将标题行更改为序列旁边另一个以制表符分隔的列。以下是所需的输出: >ID101_hg19 ATGGGTGTATCGTACCC >ID102_hg19 AGCTTTAGCGGGGTACA 关于如何执行此任务,您有什么想法吗?使用Sed,您可以像这样执行: sed 'N;s
>ID101_hg19
ATGGGTGTATCGTACCC
>ID102_hg19
AGCTTTAGCGGGGTACA
我想将标题行更改为序列旁边另一个以制表符分隔的列。以下是所需的输出:
>ID101_hg19 ATGGGTGTATCGTACCC
>ID102_hg19 AGCTTTAGCGGGGTACA
关于如何执行此任务,您有什么想法吗?使用Sed,您可以像这样执行:
sed 'N;s/\n/\t/' file.txt
使用awk,您可以执行以下操作:
awk '{getline a; printf("%s\t%s", $0, a);}' file.txt
对SMA的回答稍加更正 awk“{getline a;printf(“%s\t%s\n”,$0,a);}”file.txt
添加换行符一般来说,FASTA文件中的每一个头行后面都可以有多行数据,因此可能需要处理此类情况。如果目标是将所有连续的数据行串在一起,则以下操作可以完成此任务:
awk '/^>/ {if (prev) {print prev;}; prev=$0 "\t"; next}
{prev=prev $0;}
END {print prev}'
另一方面,如果标题仅附加到一行数据,则假定$'…'语法可用,则要使用的sed命令将是:
sed $'/^>/ {N;s/\\n/\t/;}'
完美的非常感谢。awk命令工作得非常完美。在研究了输出之后,我注意到下一个序列的ID被添加到了前一个条目的序列末尾。知道如何解决这个问题吗?另外,在
sed
方法中,会打印一个“t”而不是选项卡