comm 无法从两个文件中查找 file1 的唯一单词

comm 无法从两个文件中查找 file1 的唯一单词

我有两个文本文件,在其中我必须使用 comm 命令从文件 1 中提取所有唯一单词。因此,只提取文件 2 中没有的单词。我被要求使用该comm命令(不是diffnor 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,zshbash)。

将语言环境固定为 C 以对sort和执行字节到字节的比较comm

答案2

如果您的文件之一来自 Windows 环境,则行终止符可能会有所不同。看这里用于转换。

相关内容