我想使用每个文件的前两列将来自 fil2、file3 和 file4 的附加列添加到 file1 的适当行(前两列匹配的位置)。File2 有三列要添加到 file1,但所有其他文件只有一列要添加,最后一列。
条目NW_456 44
和NW_987 75
未在 file3 中注释,因此丢失。我想在该特定列的输出文件中将其保留为空(实际上没有说“空”)。
例子:
文件 1
NW_1234 23
NW_1234 29
NW_1234 778
NW_456 44
NW_987 75
NW_987 98
NW_5000 105
NW_5500 37
NW_5500 900
文件2
NW_1234 23 C 0:0:32:0:0:0 42:0:0:0:0:0
NW_1234 29 C 0:0:28:0:0:0 0:28:0:0:0:0
NW_1234 778 C 0:54:0:0:0:0 0:0:53:0:0:0
NW_456 44 G 0:0:0:45:0:0 59:0:0:0:0:0
NW_987 75 G 0:0:0:60:0:0 55:0:0:0:0:0
NW_987 98 C 0:0:63:0:0:0 0:42:0:0:0:0
NW_5000 105 G 0:0:71:0:0:0 0:50:0:0:0:0
NW_5500 37 G 0:0:0:54:0:0 55:0:0:0:0:0
NW_5500 900 A 43:0:0:0:0:0 0:0:0:37:0:0
文件 3
NW_1234 23 DOCK
NW_1234 29 DOCK
NW_1234 778 DOCK
NW_987 98 TFEC
NW_5000 105 MIN
NW_5500 37 LIPG
NW_5500 900 MYC
文件4
NW_1234 23 intron_region
NW_1234 29 intron_region
NW_1234 778 intron_region
NW_456 44 intergenic
NW_987 75 intergenic
NW_987 98 intron_region
NW_5000 105 intron_region
NW_5500 37 intron_region
NW_5500 900 intron_region
输出文件
NW_1234 23 C 0:0:32:0:0:0 42:0:0:0:0:0 DOCK intron_region
NW_1234 29 C 0:0:28:0:0:0 0:28:0:0:0:0 DOCK intron_region
NW_1234 778 C 0:54:0:0:0:0 0:0:53:0:0:0 DOCK intron_region
NW_456 44 G 0:0:0:45:0:0 59:0:0:0:0:0 (empty) intergenic
NW_987 75 G 0:0:0:60:0:0 55:0:0:0:0:0 (empty) intergenic
NW_987 98 C 0:0:63:0:0:0 0:42:0:0:0:0 TFEC intron_region
NW_5000 105 G 0:0:71:0:0:0 0:50:0:0:0:0 MIN intron_region
NW_5500 37 G 0:0:0:54:0:0 55:0:0:0:0:0 LIPG intron_region
NW_5500 900 A 43:0:0:0:0:0 0:0:0:37:0:0 MYC intron_region
与此问题类似:根据第二列的匹配添加列
任何帮助表示赞赏!
使用制表符作为输出字段分隔符,这将在每个 UNIX 机器上的任何 shell 中使用任何 awk 工作:
.
要将空格改为空白(对于进一步的工具解析没有多大用处),只需管道到
column
: