比较新的txt文件和旧的txt文件并删除所有匹配的数据

Rob*_*oll 8 command-line text-processing

我有一个新文件,其中包含以下数据,并用回车符分隔

a
a
b
c
d
d
Run Code Online (Sandbox Code Playgroud)

我有一个旧文件,也用回车符分隔

b
d
Run Code Online (Sandbox Code Playgroud)

如何从新文件中删除 b 和 d 并从第一个文件中删除其中一个 a?

所需的输出(由回车符分隔)将是

a
c
Run Code Online (Sandbox Code Playgroud)

我尝试过 sort -u ,它删除了 b 和 d 但也删除了 a a 。我已经尝试过 grep -vxFf 但是,新文件中有重复项。

use*_*own 11

 grep -F -f oldfile -v newfile | uniq
Run Code Online (Sandbox Code Playgroud)

使用oldfile作为grep搜索,最后删除重复行。

  • `grep -F -f 旧文件 -v 新文件 | 排序| uniq` 将保证独特的结果。 (4认同)

ste*_*ver 7

使用,仅打印之前在两个文件中未出现过的awk行:newfile

awk '!(seen[$0]++ || NR==FNR)' oldfile newfile
Run Code Online (Sandbox Code Playgroud)