use*_*037 4 bash shell performance awk grep
我正在尝试使用存储在文件filter.txt中的模式从data.txt过滤数据.如下,
grep -v -f filter.txt data.txt > op.txt
Run Code Online (Sandbox Code Playgroud)
对于filter.txt中的30-40K行和data.txt中的~300K行,这个grep需要10-15分钟.
有没有办法加快这个?
data.txt中
data1
data2
data3
Run Code Online (Sandbox Code Playgroud)
filter.txt
data1
Run Code Online (Sandbox Code Playgroud)
op.txt
data2
data3
Run Code Online (Sandbox Code Playgroud)
这适用于codeforester提供的解决方案,但是当filter.txt为空时失败.
基于Inian在相关帖子中的解决方案,此awk
命令应解决您的问题:
awk 'FNR==NR {hash[$0]; next} !($0 in hash)' filter.txt data.txt > op.txt
Run Code Online (Sandbox Code Playgroud)