2 つのファイルの違いをファイルに書き込むプログラムを作成する必要があります。プログラムは、13.464.448 行を超える 600 MB のファイルをループし、別のファイルで grep が true を返すかどうかを確認し、結果を別のファイルに書き込む必要があります。約 1.000.000 レコードで簡単なテストを作成しましたが、1 時間以上かかったので、このアプローチには 9 時間以上かかる可能性があると推測しています。
これを高速化するための推奨事項はありますか? 使用すべき特定の言語はありますか? 私はbashまたはpythonでそれを行うことを計画していました。
よろしくお願いします。
[編集 1]:申し訳ありませんが、2 つのファイルの違いを言うとき、違いを意味するものではありません。結果ファイルの形式が異なります。
ロジックは次のようになります。
ファイル A には 297,599 行あります ファイル B には 1,300 万行以上あります
ファイル A から読み取られている現在の行を選択し、それをファイル B で grep します。その行がファイル B に存在する場合は、それを結果ファイルに書き込みます。ちなみに、ファイルAとファイルBはフォーマットが異なります。結果ファイルはファイル A の形式になります。
[編集 2]:理想的には bash ソリューションを作成して、これを実行する必要があるすべてのマシンに python をインストールする必要がないように、職場で依頼されました。
これは私の現在の実装です:
#!/bin/bash
LAST_TTP=`ls -ltr TTP_*.txt | tail -1 | awk '{ print $9 }'`
LAST_EXP=`ls -ltr *.SSMT | tail -1 | awk '{ print $9 }'`
while read -r line; do
MATCH="$(grep $line $LAST_EXP)"
echo "line: $line, match: $MATCH"
# if not empty
if [ ! -z "$MATCH" ]
then
echo $MATCH >> result
fi
done < $LAST_TTP
この bash アプローチは、完了するまでに 10 時間以上かかります。bash でより効率的にする方法について何か提案はありますか?
よろしくお願いします!