【问题标题】:Efficient way to map ids映射ID的有效方法
【发布时间】:2013-12-16 02:44:09
【问题描述】:

我有两个文本文件,

文件 1 包含类似的数据

用户游戏数

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

文件 2

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

现在我要做的是在文件 2 中添加另一列,以便我将文件 2 中游戏的相应索引作为文件 1 中的额外列。

我在文件 1 中有 200 万个条目。所以我想添加另一列,指定文件 2 中游戏的索引(基本上是行号或顺序)。我怎样才能有效地做到这一点。

现在我正在逐行执行此操作。从文件 1 中读取一行,从文件 2 中 grep 对应游戏的行号并将其保存/写入文件。

这将花费我很长时间。如何加快速度?

【问题讨论】:

    标签: bash shell


    【解决方案1】:

    未经测试

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

    【讨论】:

    • 我尝试了在文件 2 中有 1000 万行和在 file1 中有 3000 行的脚本,它需要永远。有没有更好的办法?
    • 一千万种不同的运动?你确定你的文件顺序正确吗? 1 Basketball/2 Football/3 Rugby/etc 第一个,A Rugby 2/A Football 2/etc 第二个?
    【解决方案2】:

    您的 File2 应该没有重复的记录,例如没有两个足球索引记录。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-25
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多