我有两个文本文件,在其中我必须使用 comm 命令从文件 1 中提取所有唯一单词。因此,只提取文件 2 中没有的单词。我被要求使用该comm
命令(不是diff
nor join
)。
我尝试了很多方法,例如comm -32 file1 file2
,但这会返回文件 1 中的所有单词。
答案1
comm
需要排序的文件,其中每个单词必须位于一行(比较的整行)。
所以就是
(export LC_ALL=C
comm -23 <(grep -Po '\S+' file1 | sort) <(grep -Po '\S+' file2 | sort))
(假设 GNUgrep
支持 PCRE,并且 shell 支持进程替换,如ksh93
,zsh
或bash
)。
将语言环境固定为 C 以对sort
和执行字节到字节的比较comm
。
答案2
如果您的文件之一来自 Windows 环境,则行终止符可能会有所不同。看这里用于转换。