我有两个不同的管道分隔数据文件。一个比另一个大。我正在尝试根据小文件(文件 B)中包含的数据,有选择地从大文件(我们将其称为文件 A)中删除数据。文件 A 包含所有数据,文件 B 仅包含文件 A 中的一部分数据。
我想要一个函数或现有程序,它从文件 A 中删除文件 B 中包含的所有数据。我想到了一个这样的函数:
Pseudo-code:
while !eof(fileB) {
criteria = readLine(fileB);
lineToRemove = searchForLine(criteria, fileA);
deleteLine(lineToRemove, fileA);
}
但是,该解决方案对我来说似乎效率很低。文件 A 有 23,000 行,文件 B 有 17,000 行。文件 B 中包含的数据实际上分散在文件 A 中。
如果有一个程序可以做到这一点,我更喜欢它而不是代码。我对代码也不挑剔。C++ 是我的强项,但这个数据文件将在不久的将来转换为 SQL 数据库,所以我也擅长使用 SQL/PHP 代码。