从一个文件中打印包含在另一个文件中的行

时间:2014-07-19 15:41:53

标签: awk gawk

我有两个文件file1和file2。 file1有63000行,file2有6000行。我需要打印两个文件中的行。

文件1

1bl9
1bln_2
1bln_3
1blx
1blx
1bm3
1bm3
1bm9_1
1bm9_2
1bm9_1
1bm9_2

file2的

1blx
1blx
1bm4
1bln_2

输出

1blx
1blx
1bln_2

我使用了以下程序。但它适用于行数较少的文件。它对于具有大量行的文件不起作用。

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

1 个答案:

答案 0 :(得分:2)

只需使用fgrepgrep -F-f

即可
fgrep -f file1 file2

或者使用awk:

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

两个输出

1blx
1blx
1bln_2

注意:您应该确保您的文件是UNIX格式:

sed -i.bak 's|\r||' file1 file2

或者使用dos2unix(每个文件只使用一次):

dos2unix file1
dos2unix file2