根据 linux 上对应的数字展开文本文件的每一行

Expand each line of text file according to their corresponding numbers on linux

我能否仅通过基本 shell 处理或 awk 或 sed linux 将第一种格式转换为第二种格式?

这是一个玩具示例:

这种文本文件是我有的,三个cols,col2和col3 like range,左闭右开,

chr1 0 2 0  
chr1 2 6 1.5  
chr2 0 3 0  
chr2 3 10 2.1

转移描述每个职位为:

chr1 0 0  
chr1 1 0  
chr1 2 1.5  
chr1 3 1.5  
chr1 4 1.5  
chr1 5 1.5  
chr2 0 0      
chr2 1 0  
chr2 2 0    
chr2 3 2.1  
...  
chr2 9 2.1

这可以通过 awk,

awk '{for(i=;i<;i++)print ,i,}' file

将范围的起点和终点分别设置为 $2 和 $3。 并按要求打印每一行的范围。

另一种选择是对 bedopsbedmapcut 使用集合和映射操作:

$ bedops --chop 1 foo.bed | bedmap --faster --echo --echo-map-id --delim "\t" - foo.bed | cut -f1,2,4 > answer.txt

如果需要其他类型的划分和信号映射,可能会提供一些灵活性。