-1

我有一个包含以下列的文件:

chr1    1397031 1445511   360   chr1    1436533 1436893
chr1    3558988 3639716   9837  chr1    3565359 3575196
chr1    9634389 9711556   1958  chr1    9635273 9637231
chr1    10657207 10657742  535  chr1    10629864 10676549
chr1    12590100 12594553 4453  chr1    12550526 12600407
chr1    14599424 14601321 1897  chr1    14590538 14619056
chr1    15352815 15419459 7429  chr1    15363278 15370707

第四列表示第 2、3、6 和 7 列之间的重叠。

因此,第 7 列和第 3 列之间较小的那一列是重叠区域的结束位置。第 2 列和第 6 列之间较大的那个是起始位置。

任何人都可以帮助awk编写脚本吗?

4

1 回答 1

1

好吧,您的问题不是那么清楚..您描述了您的数据,但没有提及您想要得到什么..

您想列出“重叠”的开始/结束,对吗?

awk '{s=$2>=$6?$2:$6;e=$3<=$7?$3:$7;print $1,s,e,$4}' file

输出将是:

chr1 1436533 1436893 360
chr1 3565359 3575196 9837
chr1 9635273 9637231 1958
chr1 10657207 10657742 535
chr1 12590100 12594553 4453
chr1 14599424 14601321 1897
chr1 15363278 15370707 7429

列:

col1 is the text
col2 is the overlapping start
col3 is the overlapping end
col4 is the overlap 

魔术问题的魔术答案... :)

于 2012-10-11T14:13:02.323 回答