【发布时间】:2021-02-10 20:54:53
【问题描述】:
我基本上有以下2个文件:
$ cat file1.txt
AB,12 34 56,2.4,256,,
CD,23 45 67,10.8,257,,
EF,34 56 78,0.6,258,,
GH,45 67 89,58.3,259,,
...
$ cat file2.txt
AB,12 34 56,2.4,36
XY,56 99 11,3.6,15
ZQ,12 36 89,5.9,0
EF,34 56 78,0.6,99
GH,45 67 89,58.3,79
...
对于 file1.txt 中的每一行,我想使用前 3 个字段作为 file2.txt 中的索引,获取相应的最后一个字段,并将其放入 file1.txt 中,如下所示:
cat newfile.txt
AB,12 34 56,2.4,256,36,
CD,23 45 67,10.8,257,,
EF,34 56 78,0.6,258,99,
GH,45 67 89,58.3,259,79,
不能保证 file1 中的每一行都会出现在 file2 中,反之亦然,对于这种情况,上面 newfile.txt 中显示的空字段是可以的。
在我的第一次尝试中,我在 while read 循环中从 file1 中读取每一行,然后在 file2 中查找适当的行,它确实有效,但速度太慢了。 file1 和 file2 各有几十万行。
有什么方法可以使用 sed 将 file1 中每一行的前 3 个字段用作 file2 的索引,查找我需要的值,然后将其附加到 file1 中的那一行?并且不逐行读取file1?
感谢任何帮助。
【问题讨论】: