重叠/比较两个文件并打印不匹配的内容

mil*_*lan 8 command-line bash

您好,我有两个文件,其中一些文件名如下所示:

文件 1:

123.txt
456.txt
789.txt
101112.txt
Run Code Online (Sandbox Code Playgroud)

文件2:

123.txt 
789.txt
101112.txt
Run Code Online (Sandbox Code Playgroud)

是否有任何 bash 命令可以用来重叠它们并仅打印那些不匹配的行或文件名。所以我期待这样的事情:

456.txt
Run Code Online (Sandbox Code Playgroud)

hee*_*ayl 14

comm 你的朋友在这里吗:

如果文件已经排序:

comm -3 f1.txt f2.txt
Run Code Online (Sandbox Code Playgroud)

如果没有排序,sort并使用进程替换将它们作为文件描述符传递(这样我们就不需要任何临时文件):

comm -3 <(sort f1.txt) <(sort f2.txt)
Run Code Online (Sandbox Code Playgroud)

例子:

% cat f1.txt
123.txt
456.txt
789.txt
101112.txt

% cat f2.txt
123.txt
789.txt
101112.txt

% comm -3 <(sort f1.txt) <(sort f2.txt)
456.txt
Run Code Online (Sandbox Code Playgroud)