2013-12-16 47 views
2

我有两个文本文件,有效的方式来映射ID

文件1与数据,如

用户游戏计数

A Rugby 2 
A Football 2 
B Volleyball 1 
C TT 2 
... 

文件2

1 Basketball 
2 Football 
3 Rugby 
... 
90 TT 
91 Volleyball 
... 

现在我想要什么要做的是在File 2中添加另一列,这样我就可以将来自File 2的相应游戏索引作为F中的额外列ILE 1.

我在文件1.2万个条目所以我想从文件2.如何有效地做到这一点另一列添加指定的游戏指数(基本上是行号或订单)。

现在我正在逐行进行这项工作。从文件读取1行,用grep从文件2对应的游戏其行号和保存/编写到一个文件中。

这将需要我很多年。我如何加快速度?

回答

1

未经测试

awk 'NR==FNR{a[$2]=$1;next}{print $0,a[$2]}' file2 file1 
+0

我尝试了在文件2中有1000万行和在file1中有3000行的脚本,并且它需要永远。有没有更好的方法来做到这一点? – user34790

+0

1000万不同的运动?你确定你有正确的顺序的文件? '1篮球/ 2足球/ 3橄榄球/ etc'第一,'橄榄球2/A足球2/etc'第二? – Kevin

+0

是的,我让他们在正确的顺序 – user34790

1

你的文件2应该没有记录重复的,比如没有两个足球索引记录。

awk 'FNR==NR{a[$2]=$1;next}$0=$0 FS a[$2]' file2 file1