Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将文件头行快速插入列中_Python_Unix_Awk_Sed - Fatal编程技术网

Python 将文件头行快速插入列中

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

我有一个fasta文件,其中包含序列头及其相应的序列,如下所示:

>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”而不是选项卡