根据 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。
并按要求打印每一行的范围。
另一种选择是对 bedops
、bedmap
和 cut
使用集合和映射操作:
$ bedops --chop 1 foo.bed | bedmap --faster --echo --echo-map-id --delim "\t" - foo.bed | cut -f1,2,4 > answer.txt
如果需要其他类型的划分和信号映射,可能会提供一些灵活性。
我能否仅通过基本 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。 并按要求打印每一行的范围。
另一种选择是对 bedops
、bedmap
和 cut
使用集合和映射操作:
$ bedops --chop 1 foo.bed | bedmap --faster --echo --echo-map-id --delim "\t" - foo.bed | cut -f1,2,4 > answer.txt
如果需要其他类型的划分和信号映射,可能会提供一些灵活性。