我正在搜索几个小时(实际上已经两天),但找不到我的问题的答案然而。我试过Sed和Awk,但是我无法获得正确的参数。如果行文件1中的数字位于文件2中的两个数字之间,则合并两个文件中的特定行
从本质上讲,这就是我在file_1
寻找
为每行IF [中file_1在colum2值]
IS在一些行4列等于[价值在file_2]
OR等于在在file_2一些行在5柱[值]
OR IS [在值列4和值列5在file_2一些行]
THAN
ADD柱3,6和的7一些行file_2的 BETWEEN至第3栏,第4和的file_1
NB 5:值需要被比较是整型,在第3栏第6和7的值(即仅需要复制)是字符串
这是上下文中,但可能没有必要RY阅读:
我有两个文件与基因组数据,我想在一个特定的方式进行合并(列都以空格隔开)
- 第一个文件包含变种(只有那些感兴趣的人的SNP)其中,有效地,只有第二列是相关的。此列号码(在染色体上该变体的位置)
- 我有一个包含以下数据的结构注释文件的列表:
- 在柱4是在所述特定结构的和一个开始位置第5栏是结束位置。
- 柱3,7和9包含描述特定结构(一个基因等的名称)的信息
我想注释变体与在注释中的数据中的第一文件文件。因此,如果变体文件的第2列中的数字等于特定行中这些值的第4列或第5列或第OR列,则需要添加注释中该特定行的第3列,第7列和第9列。
示例文件1
SOME_NON_RELEVANT_STRING 142
SOME_NON_RELEVANT_STRING 182
SOME_NON_RELEVANT_STRING 320
SOME_NON_RELEVANT_STRING 321
SOME_NON_RELEVANT_STRING 322
SOME_NON_RELEVANT_STRING 471
SOME_NON_RELEVANT_STRING 488
SOME_NON_RELEVANT_STRING 497
SOME_NON_RELEVANT_STRING 541
SOME_NON_RELEVANT_STRING 545
SOME_NON_RELEVANT_STRING 548
SOME_NON_RELEVANT_STRING 4105
SOME_NON_RELEVANT_STRING 15879
SOME_NON_RELEVANT_STRING 26534
SOME_NON_RELEVANT_STRING 30000
SOME_NON_RELEVANT_STRING 30001
SOME_NON_RELEVANT_STRING 40001
SOME_NON_RELEVANT_STRING 44752
SOME_NON_RELEVANT_STRING 50587
SOME_NON_RELEVANT_STRING 87512
SOME_NON_RELEVANT_STRING 96541
SOME_NON_RELEVANT_STRING 99541
SOME_NON_RELEVANT_STRING 99871
示例文件2
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A1 0 38 B1 C1
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A2 40 2100 B2 C2
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A3 2101 9999 B3 C3
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A4 10000 15000 B4 C4
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A5 15001 30000 B5 C5
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A6 30001 40000 B6 C6
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A7 40001 50001 B7 C7
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A8 50001 50587 B8 C8
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A9 50588 83054 B9 C9
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A10 83055 98421 B10 C10
SOME_NON_RELEVANT_STRING SOME_NON_RELEVANT_STRING A11 98422 99999 B11 C11
样本输出文件
142 A2 B2 C2
182 A2 B2 C2
320 A2 B2 C2
321 A2 B2 C2
322 A2 B2 C2
471 A2 B2 C2
488 A2 B2 C2
497 A2 B2 C2
541 A2 B2 C2
545 A2 B2 C2
548 A2 B2 C2
4105 A3 B3 C3
15879 A5 B5 C5
26534 A5 B5 C5
30000 A5 B5 C5
30001 A6 B6 C6
40001 A7 B7 C7
44752 A7 B7 C7
50587 A8 B8 C8
87512 A10 B10 C10
96541 A10 B10 C10
99541 A11 B11 C11
99871 A11 B11 C1
当你扔在一堆特定领域的语言(SNP,基因组,染色体变异体等)时,它使我们很难弄清楚你想要什么。只需发布平面文件(未格式化),并说出类似于“文件1中的给定值X,如果值Y或Z出现在文件2的字段A中,则希望输出两个文件的WHATEVER字段”。 – 2013-05-13 12:44:23
哈哈,非常感谢。我编辑了我的文章并添加了几行,以更常见的方式总结整个故事。希望它能让你更容易理解。 – Elmer 2013-05-13 13:34:49
是的,但你仍然没有发布一些示例输入和预期的输出,我们可以简单地复制/粘贴来测试解决方案。我一个人不打算复制你发布的这些表格,并编辑它们以从它们创建样本输入。 – 2013-05-13 13:36:31