我有两个文件。
文件一:
A0001 C001
B0003 C896
A0024 C234
.
B1542 C231
.
upto 28412 such lines
文件2:
A0001
A0024
B1542
.
.
and 12000 such lines.
我想将文件 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;
}
但它失败了。
答案1
这应该可以完成这项工作:
grep -Ff File2 File1
从中读取-f File2
模式File2
并将-F
模式视为固定字符串(即不使用正则表达式)。
答案2
您可以使用awk
:
$ awk 'FNR==NR{a[$1];next}($1 in a){print}' file2 file1
A0001 C001
A0024 C234
B1542 C231
答案3
在我看来,两个文件都已在第一个字段中排序。如果是这样:
join file1 file2
最好,只要你的文件很大。