我可以通过基本的shell处理、awk或sed在linux上将第一种格式转换为第二种格式吗?
这是一个玩具示例:
这种文本文件是我有的,三个cols,col2和col3一样的范围,左关闭右打开,

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=$2;i<$3;i++)print $1,i,$4}' file

将范围的开始和结束分别设置为$2和$3。
并按要求打印每行的范围。

10-08 09:43