我有兩個文件。第一個(file1.txt
)有大約15,000行,第二個文件(file2.txt
)有大約180,000行。我試圖從file1.txt
中找到所有匹配的行,並從file2.txt
中刪除它們。我目前嘗試的是這樣的:grep -f文件搜索
grep -v -f file1.txt file2.txt > out.txt
這是行得通的,但需要很長時間。我試圖找到一種方法來加快速度,但無法解決它。有沒有人有建議? 感謝您的幫助
我有兩個文件。第一個(file1.txt
)有大約15,000行,第二個文件(file2.txt
)有大約180,000行。我試圖從file1.txt
中找到所有匹配的行,並從file2.txt
中刪除它們。我目前嘗試的是這樣的:grep -f文件搜索
grep -v -f file1.txt file2.txt > out.txt
這是行得通的,但需要很長時間。我試圖找到一種方法來加快速度,但無法解決它。有沒有人有建議? 感謝您的幫助
如果「匹配」的定義這裏是「一致」:
試試這個:
awk 'NR==FNR{a[$0];next;}!($0 in a)' file1 file2 >out.txt
太棒了!這完美並且幾乎是即時的。 awk可以做很多很酷的東西,我需要學習...謝謝 – user1352084
@ user1352084,你可以嘗試你的grep行,但是-F選項,它看起來像'grep -F -v -f file1 fil2'看看它是否更快? – Kent
@ user1352084因爲它解決了你的問題,請接受答案 – Suku
「匹配」你的意思在這裏是相同的嗎?不是正則表達式匹配? – Kent
@Kent由於OP使用'grep',我想他想做正則表達式(或至少部分文本)匹配 – gaborsch
檢查此:http://theunixshell.blogspot.com/2013/01/perls-equivalent-of- grep-f.html或http://theunixshell.blogspot.com/2012/12/file-comparisons-using-awk-match-columns.html – Vijay