我需要编写一个程序,将两个文件之间的差异写入文件。程序必须遍历一个超过 13.464.448 行的 600 MB 文件,检查 grep 是否在另一个文件上返回 true,然后将结果写入另一个文件。我用大约 1.000.000 条记录编写了一个快速测试,花了一个多小时,所以我猜这种方法可能需要 9 个多小时。
您对如何加快速度有什么建议吗?我应该使用任何特定的语言吗?我打算用 bash 或 python 来做。
提前非常感谢。
[编辑 1]:对不起,当我说两个文件之间的差异时,我并不是指差异。结果文件采用不同的格式。
逻辑有点像这样:
文件 A 有 297.599 行 文件 B 有超过 1300 万行
我选择从文件 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 中提高效率有什么建议吗?
提前非常感谢!