需要帮助组合/加入两个表格。
Table_1
将一个项目(item_ID)分配给一个术语(term_ID)。
item_ID term_ID
------- -------
C051890 C535944
C061133 C535944
C402769 C535944
D000082 C535944
C006632 D017624
C051890 D017624
Table_2
标识编号列表(term_locator)中术语的位置(行号)。
term_ID term_locator
------- ------------
C535944 1340
C535944 1523
C535944 1829
C535944 1864
D017624 1277
D017624 4290
如何使用awk
生成table_1和table_2的组合?例如,所需的输出为Table_3
。
item_ID term_ID term_locator
------- ------- ------------
C051890 C535944 1340
C061133 C535944 1340
C402769 C535944 1340
D000082 C535944 1340
C051890 C535944 1523
C061133 C535944 1523
C402769 C535944 1523
D000082 C535944 1523
C051890 C535944 1829
C061133 C535944 1829
C402769 C535944 1829
D000082 C535944 1829
C051890 C535944 1864
C061133 C535944 1864
C402769 C535944 1864
D000082 C535944 1864
C006632 D017624 1277
C051890 D017624 1277
C006632 D017624 4290
C051890 D017624 4290
其他信息:
可以将项目分配给多个术语(例如,C051890分配给C535944和D017624)。
term_locator是一个唯一的数字(即列表中的第一个数字是1,最后一个数字大于4290)。
我的平台:
gawk-3.1.6
。可以使用其他GnuWin32实用程序来解决此问题。
可以替代awk
。
答案 0 :(得分:4)
我的解决方案并不完美,但很简单:
join -1 2 -2 1 -o 1.1,1.2,2.2 table1.txt table2.txt
item_ID term_ID term_locator
------- ------- ------------
C051890 C535944 1340
C051890 C535944 1523
C051890 C535944 1829
C051890 C535944 1864
C061133 C535944 1340
C061133 C535944 1523
C061133 C535944 1829
C061133 C535944 1864
C402769 C535944 1340
C402769 C535944 1523
C402769 C535944 1829
C402769 C535944 1864
D000082 C535944 1340
D000082 C535944 1523
D000082 C535944 1829
D000082 C535944 1864
C006632 D017624 1277
C006632 D017624 4290
C051890 D017624 1277
C051890 D017624 4290
join
命令-1 2 -2 1
只是说:将file1 / column2与file2 / column1 -o 1.1,1.2,2.2
表示:输出file1 / column1,file1 / column2和file2 / column2