我有两个文件,其中包含一些单词的内容。
例子
file1 有 10 个单词:
world
earth
eye
ear
near
from
going
want
we
our
第二个 file2 有 7 个单词:
world
earth
eye
ear
near
going
want
我希望输出 file2 中不存在的单词作为第三个文件。
例如 (from 、 our 、 we) 不存在于 file2 中。
答案1
做就是了
grep -vFxf file2 file1 > file3
这将返回 file2 中不存在但 file1 中存在的那些行,并将结果写入 file3。
-v
,反向匹配,这里的意思是那些行只存在于file2中。如果没有-v
它,将返回两个文件中都存在的那些行。-F
,这表明grep
将模式匹配为固定模式字符串而不是正则表达式(正则表达式)-x
, 将整行匹配为模式字符串-f
,从文件中读取模式
或者根据您的问题的标题和您提到的命令sort -u
,似乎您希望这些独特的单词(实际上是行)存在于 file1 或 file2 中。那么你只需要。
uniq -u <(sort file1 file2) > file3
答案2
另一个解决方案:
comm -23 <(sort file1) <(sort file2) > file3
-23 将抑制仅包含在 file2 或两个文件中的行。