我有巨大的文件數量,大約200,000記錄在一個文件中。我一直在測試一些情況,在這些情況下,我必須弄清楚文件的命名模式是否與某些特定的字符串匹配。這裏是我如何前面 -嵌套for循環太慢:1MN記錄遍歷
測試字符串,我存儲在一個文件(假設一個案件,他們是10)。包含字符串記錄的實際文件,以換行符分隔;總計高達20萬條記錄。要檢查大文件中是否存在測試字符串模式,我寫了一個小的嵌套for循環。
for i in `cat TestString.txt`
do
for j in `cat LargeFile.txt`
do
if [[ $i == $j ]]
then
echo "Match" >> result.txt
fi
done
done
此嵌套循環的實際需要做的遍歷(如果我沒看錯的概念),10x200000倍。通常情況下,我沒有看到服務器上的負載太大,但所花費的時間就像從前一樣。節錄在過去4小時內運行,並且有一些「匹配」結果。
有沒有人有任何想法來加速?我用python或perl touch找到了很多答案,但我老實說在Unix上搜索某些東西。
感謝
您當前的代碼讀取每個循環一個字。當TestString.txt中的10個記錄每個都有20個字時,您將循環執行LargeFile.txt 10x20x200.000次。你多久檢查一次?當LargeFile.txt對每條記錄也有20個字時,您可以進行10x20x200.000x20的比較。 –
您應該將'>> result.txt'移到循環外部,這樣您將不會關閉並打開每個循環的文件。 –