パイプで区切られた2つの異なるデータファイルがあります。一方はもう一方よりも大きいです。小さいファイル(ファイルB)に含まれているデータに基づいて、大きいファイル(ファイルAと呼びます)からデータを選択的に削除しようとしています。ファイルAにはすべてのデータが含まれ、ファイルBにはファイルAのデータの一部のみが含まれます。
ファイルBに含まれるすべてのデータをファイルAから削除する関数または既存のプログラムが必要です。次のような関数を念頭に置いていました。
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コードも得意です。