在linux上,根据相应的数字展开文本文件的每一行
在linux上,我可以仅仅通过基本shell处理、awk或sed将第一种格式转换为第二种格式吗 这是一个玩具示例: 这种文本文件就是我的,三个col,col2和col3相似的范围,左关闭和右打开在linux上,根据相应的数字展开文本文件的每一行,linux,shell,awk,sed,bioinformatics,Linux,Shell,Awk,Sed,Bioinformatics,在linux上,我可以仅仅通过基本shell处理、awk或sed将第一种格式转换为第二种格式吗 这是一个玩具示例: 这种文本文件就是我的,三个col,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
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
awk'{for(i=$2;i这可以通过awk
完成
awk '{for(i=$2;i<$3;i++)print $1,i,$4}' file
awk'{for(i=$2;i另一个选项是对bedops
、bedmap
和cut
使用设置和映射操作:
$ bedops --chop 1 foo.bed | bedmap --faster --echo --echo-map-id --delim "\t" - foo.bed | cut -f1,2,4 > answer.txt
如果需要其他类型的分割和信号映射,可能会提供一定的灵活性。另一个选项是使用设置和映射操作与bedops
、bedmap
和cut
:
$ bedops --chop 1 foo.bed | bedmap --faster --echo --echo-map-id --delim "\t" - foo.bed | cut -f1,2,4 > answer.txt
如果需要其他类型的分割和信号映射,可能会提供一些灵活性。awk'{B=int($2);E=int($3);for(i=B;iThanks!!!这是Pierre Lindenbaum刚才的回答(我把这个问题贴到其他地方,因为太无助了,找不到答案),我现在正在尝试,但是我的数据太大了,还没有用完。这两种方法导致相同的结果,并且完全正确。awk'{B=int($2);E=int($3);for(I=B;iThanks!!!这是Pierre Lindenbaum刚才的回答(我把这个问题贴到其他地方,因为我很无助,也找不到答案),我正在尝试,但是我的数据太大了,还没有用完。这两种方法导致相同的结果,而且完全正确。对不起,我等了很长时间,并认为我在这里不会再得到答案。但我肯定会注意到你的善意提醒。不用担心,只是想链接帖子。我不介意交叉发布,只要它们是凯德。我还是会注意的~Thankstorry,我等了很长时间,我想我在这里不会再得到答案了。但我肯定会注意到你的提醒。不用担心,我只是想链接这些帖子。我不介意交叉发布,只要它们是链接的。我还是会注意~Thankstory~请你解释一下bedops和bedmap命令以及o您使用的选项?您能解释一下bedops和bedmap命令的作用以及您使用的选项吗?