我需要編寫一個程序來寫入文件兩個文件之間的差異。 程序必須通過一個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