Bash 从另一个文件中删除一个文件中的停止字
我有一个文件File1.txt,里面有一些单词。我有另一个文件(称为blacklistwords.txt),我需要从原始文件1.txt中删除blacklistwords.txt中包含的所有单词Bash 从另一个文件中删除一个文件中的停止字,bash,Bash,我有一个文件File1.txt,里面有一些单词。我有另一个文件(称为blacklistwords.txt),我需要从原始文件1.txt中删除blacklistwords.txt中包含的所有单词 File1.txt ---------- return 25 murder 28 another 54 stackoverflow 12 response 16 violence 32 blacklistwords.txt ------------------ violence murde
File1.txt
----------
return 25
murder 28
another 54
stackoverflow 12
response 16
violence 32
blacklistwords.txt
------------------
violence
murder
crime
这是输出的外观:
Final output:
-------------
return 25
another 54
stackoverflow 12
response 16
我试过这个,它成功了:
grep -i -F -v -f blacklistwords.txt file1.txt
你的解决方案基本上是正确的
请允许我注意,您没有要求不区分大小写的站点匹配,通过
-i
开关添加它会造成相当大的性能损失,至少对于unicode环境来说是如此,因此如果不是真的需要的话,您可能希望去掉它。在为我自己的案例分析user965692的解决方案时,我发现需要另一个选项,-w
,它只搜索整个单词
要完全分解它:
告诉grep忽略大小写-i
告诉grep需要一个固定字符串列表-F
搜索整个单词(即,如果“flow”是一个stopword,它将与“overflow”不匹配)-w
反转匹配项(即,仅打印字符串列表中没有的内容-v
从给定文件的行中获取模式-f blacklistwords.txt
grep-i-F-w-v-F blacklistwords.txt file1.txt
如果您告诉我们您使用的是什么操作系统,那会有所帮助。