进一步阅读

进一步阅读

我有两个这种形式的文件:

File1: id:0.0260509118455
File2: id:X:Y

我想要获得第三个文件,其中 file1 的所有行与包含相同 id 的第二个文件的行相连。 IE :

File3: id:0.0260509118455:X:Y

(文件 1 有 100 行,文件 2 有 666 行)。不存在不可配对的线路

答案1

要连接包含数据库表的文件,请join在按键顺序对表进行排序后使用以下命令:

排序 -b -t : 文件 1 > 排序文件 1
排序 -b -t : 文件 2 > 排序文件 2
join -t : 排序文件1 排序文件2

进一步阅读

答案2

您应该能够使用“粘贴”命令来执行此操作。它读取列而不是行。

awk -F: '{ print $2}' File2 > File4

删除 id: 标签

然后

paste  File1 File4 > File3

应该做这项工作。

答案3

您还可以使用 awk 来完成此操作,检查 id,而不需要以任何方式对文件进行排序或预处理:

awk -F: 'NR==FNR{a[$1]=$0;next}$1 in a {print a[$1],$2,$3}' OFS=: file1 file2 >file3

PS:为了获得性能,小文件(文件1 100行)首先加载到内存中,然后将大文件与内存进行比较。

相关内容