比较两个文件的匹配行并存储阳性结果

use*_*389 14 bash files file-comparison

我有两个文件。

文件 1:

A0001  C001
B0003  C896
A0024  C234
.
B1542  C231
.
upto 28412 such lines
Run Code Online (Sandbox Code Playgroud)

文件2:

A0001
A0024
B1542
.
.
and 12000 such lines.
Run Code Online (Sandbox Code Playgroud)

我想将文件 2 与文件 1 进行比较并存储文件 1 中的匹配行。我尝试过 Perl 和 Bash,但似乎都没有工作。

我最近尝试的事情是这样的:

for (@q) # after storing contents of second file in an array
{
        $line =`cat File1 | grep $_`; #directly calling File 1 from bash
        print $line;
}
Run Code Online (Sandbox Code Playgroud)

但它失败了。

Gra*_*eme 19

这应该可以完成这项工作:

grep -Ff File2 File1
Run Code Online (Sandbox Code Playgroud)

-f File2从读出模式File2-F治疗模式为固定的字符串(即,没有正则表达式使用)。


cuo*_*glm 9

您可以使用awk

$ awk 'FNR==NR{a[$1];next}($1 in a){print}' file2 file1
A0001   C001
A0024   C234
B1542   C231
Run Code Online (Sandbox Code Playgroud)