我有两个文件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
答案 0 :(得分:2)
只需使用fgrep
或grep -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