【发布时间】:2016-06-13 19:00:49
【问题描述】:
我有两个结构相似的文件(制表符分隔和很多很多行,第 3 列减去第 2 列 = 1)看起来有点像这样:
文件 1:
1 170023 170024 A -
1 170024 170025 T -
1 170026 170027 A -
1 170028 170029 G -
1 170029 170030 C -
1 170031 170032 C -
文件 2:
1 170023 170024 A
1 170024 170025 T
1 170025 170026 G
1 170026 170027 A
1 170027 170028 G
1 170028 170029 T
1 170029 170030 A
1 170030 170031 G
1 170031 170032 C
我想将文件 2 中的第 4 列(只有字母的列)添加到文件 1。通常,使用 pr 或 paste 很容易,但问题是第 1-3 列不是两个文件中的相同。换句话说,文件的行数不同,文件 2 的行数总是比文件 1 多(特别是,文件 1 中的第 2 列和第 3 列中的所有数字也出现在文件 2 中,但不是反之亦然)。我也知道如何在 R 中执行此操作,但文件太大而无法在 R 中轻松处理,我需要为十几个文件执行该任务。所以我想,bash 或任何命令行软件将是解决这个问题的最有效方法。
当且仅当文件 2 中的列 1-3 与文件 1 中的列 1-3 完全匹配时,我真正想要做的是添加文件 2 中的第 4 列的字母。因此,文件 1 的第 4 列和第 5 列中出现什么符号并不重要。基于上述文件 1 和文件 2 的示例,所需的输出将是:
输出:
1 170023 170024 A - A
1 170024 170025 T - T
1 170026 170027 A - A
1 170028 170029 G - T
1 170029 170030 C - A
1 170031 170032 C - C
如果有人能帮我解决这个问题,我会非常高兴。非常感谢您!
【问题讨论】:
标签: bash terminal pattern-matching paste data-manipulation