2011-05-06 138 views
3

我有这种格式比较两个文件

file1= filename val1 val2 
file2= filename val3 val4 

我想比较的文件名和两个文件,如果他们有相同的名字,我想第三个文件像这 -

filename val1 val2 val3 val4 

我正在从file1中挑选一个文件名,然后通过file2来查看我是否可以得到它。然后寻找指针返回file2的顶部为下一个文件名..有一个更有效的方法来做到这一点?

+2

你可能想澄清你的问题,并显示您正在使用的代码。 – zeekay 2011-05-06 00:47:57

回答

2

创建词典file2[filename] = (val3, val4)。你可以创建一次,然后查找时间为你从file1得到的给定文件名需要一段时间(即或多或少独立于文件2的大小)

4

这听起来像你要找的是标准join命令(不是Python,而是一个标准的Unix shell实用程序)。下面是来自手册页剪断的系统上(似乎有更多的细节比Linux的man page for join):

 join phonedir names 

     If the phonedir file contains the following names: 

     Adams A.  555-6235 
     Dickerson B. 555-1842 
     Erwin G.  555-1234 
     Jackson J.  555-0256 
     Lewis B.  555-3237 
     Norwood M.  555-5341 
     Smartt D.  555-1540 
     Wright M.  555-1234 
     Xandy G.  555-5015 

     and the names file contains these names and department numbers: 

     Erwin   Dept. 389 
     Frost   Dept. 217 
     Nicholson  Dept. 311 
     Norwood   Dept. 454 
     Wright   Dept. 520 
     Xandy   Dept. 999 

     the join command displays: 

     Erwin G.  555-1234  Dept. 389 
     Norwood M.  555-5341  Dept. 454 
     Wright M.  555-1234  Dept. 520 
     Xandy G.  555-5015  Dept. 999 
+0

谢谢!不幸的是我得到一个额外的新行..所以我得到的最终结果是文件名val1 val2(在新行)val3 val4。我希望它像你展示的那样 - 没有file1之后的换行符。我正在使用join file1 file2> outputfile – Illusionist 2011-05-06 01:43:05

+0

@Illusionist:它可能*与行结尾相关。您的文件可能是CRLF终止(DOS风格)? – 2011-05-06 01:47:50

+0

是的,它是CLRF终止 – Illusionist 2011-05-06 01:50:37