【发布时间】:2012-11-23 19:31:52
【问题描述】:
我有 2 个文本文件。 file1 包含一个 ID 列表:
11002
10995
48981
79600
file2:
10993 item 0
11002 item 6
10995 item 7
79600 item 7
439481 item 5
272557 item 7
224325 item 7
84156 item 6
572546 item 7
693661 item 7
.....
我正在尝试从 file2 中选择 ID(第一列)在 file1 中的所有行。目前,我正在做的是遍历第一个文件以创建一个正则表达式,例如:
^\b11002\b\|^\b10995\b\|^\b48981\b|^\b79600\b
然后运行:
grep '^11002\|^10995\|^48981|^79600' file2.txt
但是当file1 中的ID 数量太大(~2000)时,正则表达式会变得很长,grep 会变慢。还有其他方法吗?我正在使用 Perl + Awk + Unix。
【问题讨论】:
-
我已经看到很多答案了,但是如果你愿意的话,你可能会发现这里的 perl 代码可以适应:stackoverflow.com/questions/13713032/… 你需要添加一些东西来过滤掉 file2 中的第一个 col。