-2
我需要找到整个床文件中最长的区域。我知道如何找到某个特定区域的覆盖范围,但我不知道如何找到每个区域的覆盖范围(也就是长度结束开始或$ 3- $ 2)。一旦我知道命令,我知道如何按数字排序。我只知道介绍bash和介绍awk。任何帮助将是伟大的!使用awk和/或bash查找床文件中最长的区域长度
我需要找到整个床文件中最长的区域。我知道如何找到某个特定区域的覆盖范围,但我不知道如何找到每个区域的覆盖范围(也就是长度结束开始或$ 3- $ 2)。一旦我知道命令,我知道如何按数字排序。我只知道介绍bash和介绍awk。任何帮助将是伟大的!使用awk和/或bash查找床文件中最长的区域长度
在黑暗中拍摄根据:http://uswest.ensembl.org/info/website/upload/bed.html?redirect=no
使用的数据有:
chr1 213941196 213942363
chr1 213942363 213943530
chr1 213943530 213944697
chr2 158364697 158365864
chr2 158365864 158367031
chr3 127477031 127478198
chr3 127478198 127479365
chr3 127479365 127480532
chr3 127480532 127481699
,并指出,我看到的区域中提到的唯一的地方有相关的染色体的名字,我会假定一个区域代表多个行,并且具有相同的$1
字段。
求和区域可以这样做,那么:
awk '{ a[$1]+=($3-$2) } END {for(k in a) { print k, a[k] }}' data
这给像输出:
chr1 3501
chr2 2334
chr3 4668
然后你可以管到使用“-NR -k2,2”标志,其排序像:
awk '{ a[$1]+=($3-$2) } END { for(k in a) { print k, a[k] } }' data | sort -nr -k2,2
chr3 4668
chr1 3501
chr2 2334
awk的是:
a
并使用$3-$2
的差异填充$1
键。+=
)END
块,通过阵列和输出的键/值对循环。
你的问题根本没有任何意义。什么是床档?请更新一些输入数据和预期输出的问题。 – 2015-02-09 20:04:08