【发布时间】:2013-09-29 19:48:54
【问题描述】:
我有两个文件正在尝试根据第 1 列和第 2 列加入/合并。 它们看起来像这样,“文件 1”比文件 2 短得多,我想找到这两个文件的交集: 如果记录不匹配,最后一列需要用不同的字符串更新。
下面的例子:
文件 1:
1047 510 75 Live
1048 510 75 Live
1049 510 75 Live
1627 510 75 Live
1628 510 75 Live
1629 510 75 Live
文件 2:
1047 510 75 Live
1048 510 75 Live
1049 510 75 Live
107 510 39 Live
108 510 39 Live
109 510 39 Live
117 510 39 Live
118 510 39 Live
119 510 39 Live
1627 510 75 Live
1628 510 75 Live
1629 510 75 Live
17 510 75 Live
目标:文件 3
1047 510 75 Live
1048 510 75 Live
1049 510 75 Live
107 510 39 Test
108 510 39 Test
109 510 39 Test
117 510 39 Test
118 510 39 Test
119 510 39 Test
1627 510 75 Live
1628 510 75 Live
1629 510 75 Live
17 510 75 Test
【问题讨论】:
-
如果上面的第二个文件中存在
1047 510 39 Live,输出应该是什么?应该是来自 file1 的行,还是来自 file2 的行,还是两行或其他什么? -
@Imran - 欢迎来到 SO!到目前为止,您尝试过做什么?如果您不说明自己为合并所做的尝试,您可能不会获得太多帮助。
-
文件 1 和文件 2:每个文件的前 2 列作为主键,应该用于比较这两个文件。将文件 2 的记录与文件 1 进行比较。如果文件 1 中存在记录,则将文件 2 中的记录替换为文件 1 中找到的记录 如果文件 1 中未找到记录,则仅更新文件 2 中该记录的最后一列。我希望它很清楚。
-
我试过awk,但是处理了几条记录就失败了。 awk 'FNR==NR{a[$1,$2]=$3;next} ($1,$2) in a{print $0, a[$1,$2]}'