我需要编写一个程序来写入文件两个文件之间的差异。 程序必须通过一个600 MB以上的文件循环超过13.464.448行,检查一个grep是否在另一个文件上返回true,然后将结果写入另一个文件。 我写了一个约1,000,000条记录的快速测试,花了一个多小时,所以我猜这种方法可能需要9个多小时。比较两个大文件
对于如何加快速度,您有什么建议吗?我应该使用哪种特定语言?我打算用bash或python做它。
非常感谢。
[编辑1]:对不起,当我说两个文件之间的差异,我不是指差异。结果文件格式不同。
的逻辑是有点像这样:
文件A具有297.599线 文件B具有超过13万线
我挑选当前行从文件中被读出,grep显示它在文件B,如果该行存在于文件B中,我将把它写入结果文件。顺便说一句,文件A和文件B有不同的格式。结果文件将有A文件的格式
[编辑2]:有人问我在工作中创造一个bash理想的解决方案,使我们不必对所有这一切都运行的机器安装python上。
这是我CURENT实现:
#!/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
这个庆典的做法是采取10小时才能完成。你有什么建议如何使它在bash中更高效?
非常感谢!
使用diff实用程序? – dda
也许如果你展示了一些代码,我们可以帮助优化它。 –
我不太明白你想达到什么目的,但如果你的描述是正确的,那么如果你想对这些文件进行排序,那么它会得到改进。 – vartec