我有一个超过 50000 行的主文件,我需要从实际文件中删除大约 20000 行,为此我使用了grep -vE
显示错误为参数太多的命令。
我正在使用sed
命令来删除那些使用 for 循环的。但是删除需要很多时间,因为sed
要初始化20000 个命令。
for i in `cat 20000-words.txt`; do
sed -i -e "/$i/ d" 50000-lines.txt
done
Run Code Online (Sandbox Code Playgroud)
假设 20000-words.txt 已经是每行一个字的格式,执行:
grep -vFf 20000-words.txt 50000-lines.txt >50000-filtered-lines.txt
Run Code Online (Sandbox Code Playgroud)
-f
grep的参数告诉它从文件中读取模式,每行一个模式,而不是将它们作为命令行参数。-F
grep的参数告诉它模式应该用作文字字符串而不是正则表达式。