我正在尝试从制表符分隔文件中删除冗余数据,如下所示
chr1 1841 1851 4
chr1 1991 2001 3
chr1 2491 2501 2
chr1 2491 2501 2
chr1 2501 2511 1
chr1 2681 2691 3
chr1 2881 2891 4
chr1 2891 2901 1
chr1 3241 3251 1
chr1 3241 3251 6
条件是:如果前三列相同,则应使用第四列(最大值)中的值来获取前三列和第四列。如果出现平局,则仅应打印 4 列中的值一次。
所以对于上述输入,理想的输出应该是
chr1 1841 1851 4
chr1 1991 2001 3
chr1 2491 2501 2
chr1 2501 2511 1
chr1 2681 2691 3
chr1 2881 2891 4
chr1 2891 2901 1
chr1 3241 3251 6
我是如何接近的:
先对文件进行排序,然后我把它弄乱了
sort file | awk -F '\t' 'NR==1{last = $1; max = 0} {if (last != $1) {printf "%s\t%e\n", last, max; last = $1; max = $4} else if (max < $4) max = $4} END{printf "%s\t%e\n", last, max}'
请帮助