【发布时间】:2014-09-10 14:21:54
【问题描述】:
我有两个文件 file1 和 file2。 file1 有 63000 行,file2 有 6000 行。我需要打印两个文件中的行。
文件1
1bl9
1bln_2
1bln_3
1blx
1blx
1bm3
1bm3
1bm9_1
1bm9_2
1bm9_1
1bm9_2
文件2
1blx
1blx
1bm4
1bln_2
输出
1blx
1blx
1bln_2
我使用了以下程序。但它适用于行数较少的文件。它不适用于具有大量行的文件。
awk 'FNR==NR { a[$0]; next } $0 in a' file2 file1
【问题讨论】:
-
“它不起作用”信息不足。它以什么方式不起作用?什么是“大量行”?
-
@abar 使用更稳定的 Awk,它可以处理像 GNU Awk 这样的大行,或者使用其他语言,如 Perl、Python 或 Ruby。
-
@ooga file1 有 63000 行,file2 有 6000 行。我的代码不适用于这些文件。但是如果我减少行数,我的代码就可以工作了。
-
再次,在什么意义上它不起作用?发生什么了?你得到输出,但输出不正确?你没有得到任何输出吗?我注意到您首先放置了较小的文件,所以这就是您正在读入数组的文件。这些线条看起来像你上面显示的吗?这些非常小的行中的 6000 行并不占用太多内存。你在什么系统上?
-
@ooga 我没有得到任何输出。这些行看起来像上面的例子。我使用的是 ubuntu 14.04 LTS。我无法得到解决方案。