如何在shell中加入两个文件

时间:2014-03-31 11:39:15

标签: linux shell

有两个文件 - :

File1-:
email
abc@gmail.com
dbc@yahoo.com
hbc@ymail.com

File2-:
abc@gmail.com,dpk,25,India
dbc@yahoo.com,dpk,25,India
hbc@ymail.com,dpk,25,India
kbc@gmail.com,dpk,25,India
nbc@ymail.com,dpk,25,India

Required file should be-:
abc@gmail.com,dpk,25,India
dbc@yahoo.com,dpk,25,India
hbc@ymail.com,dpk,25,India

我们没有使用grep,因为实际文件包含大量数据并且在file2中花费巨大时间来搜索file1的电子邮件ID。 是否可以使用Join或Comm实用程序,如果是,请帮助。我曾尝试但没有得到理想的结果这两个实用程序也可以处理排序数据,但是两个文件中的数据没有排序。

1 个答案:

答案 0 :(得分:6)

grep -Ff File1 File2

这将File1(-F)中的固定字符串(-f)作为模式转换为File2中的grep。对固定字符串进行润滑可以显着加快操作速度。

如果不能减少它......

join -t',' File1 File2

...也应该这样做,但需要对两个文件进行排序。 (加入第一个字段是默认值,因此您只需告诉join使用逗号作为字段分隔符。)如果文件确实很大需要先排序,我不是确定这实际上会更快。