Bash 如何从文本文件中删除行列表中的单词?

Bash 如何从文本文件中删除行列表中的单词?,bash,Bash,file1>word_list.txt>超过1000000行 file2>list.txt>超过1000000行 我有一个包含单词列表的文件。我想从一个大文本文件中删除此文件中所有出现的单词 例如: 文件1 111 222 文本文件示例 111 222 333 444 555 输出 333 444 555 对于超过100万行的大型文件,此代码可能非常慢: sed -e "$(sed 's:.*:s/&//ig:' word_list.txt)" list.txt

file1>word_list.txt>超过1000000行

file2>list.txt>超过1000000行

我有一个包含单词列表的文件。我想从一个大文本文件中删除此文件中所有出现的单词

例如:

文件1

111
222
文本文件示例

111
222
333
444
555
输出

333
444
555
对于超过100万行的大型文件,此代码可能非常慢:

sed -e "$(sed 's:.*:s/&//ig:' word_list.txt)" list.txt
解决这个问题最合适的方法是什么?

假设, 文件的结构是每行一个单词,单词在每个文件中是唯一的,文件可以排序(或者已经排序)

这将为您提供文件2中不在文件1中的唯一单词(即设置为差异file2\file1)

这应该是最快的方法。如果您可以测试其他解决方案,请发布时间安排

或者

$ awk 'NR==FNR{a[$0]; next} !($0 in a)' file1 file2

只要你有足够的记忆力,它就可以工作。这不需要排序。

第一个Q很好,有样本数据、所需输出和。。。。喘息,一些代码!好节目。我假设您也不需要删除像
111222333
(例如,还有数百万行。使用下面的解决方案,我会添加编辑您的搜索目标文件以使用线锚,即
^111$
^222$
,等等。继续发布。祝您好运。非常感谢兄弟,但File1是大文件(100000字)无法使用该选项您是要单独删除单词还是要删除它们恰好出现在屏幕上的完整行?我要删除完整行lines@Cyrus,为什么要删除您的答案?尽管它不如
comm
方法快,
grep-vxf
仍然非常有效。
$ awk 'NR==FNR{a[$0]; next} !($0 in a)' file1 file2