我怎样才能在linux上执行这个命令(sort -u命令)

我怎样才能在linux上执行这个命令(sort -u命令)

我有两个文件,其中包含一些单词的内容。

例子

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 或两个文件中的行。

相关内容