linux - 附加但跳过现有数据

linux - 附加但跳过现有数据

作为一名 Linux 新手,我尝试复制但附加来自不同目录下的多个更新列表的现有信息,到可能具有一些匹配信息但没有重复的现有文件中。

/dir1/file1
/dir1/file2
/dir2/file1
/dir2/file2

然后在文件中例如:

/目录1/文件1:

aaa
bbb
ccc

/目录2/文件1:

aaa
bbb
ccc
ddd
eee

所以我知道通常我可以 cat /dir1/file1 >> /dir2/file1,但结果会像这样包含重复的行:

aaa
bbb
ccc
ddd
eee
aaa
bbb
ccc

与其他文件相比,可能是:/dir1/file2

mmm
nnn
ooo

/目录2/文件2

mmm
nnn
zzz
yyy

我希望最终的 /dir2/file2 文件包含:

mmm
nnn
ooo
zzz
yyy

那么我该如何做才能避免不同文件夹中的多个不同文件中出现重复的行?我们讨论的是大约 115 个文件夹中的 468 个文件,其中 dir1 包含原始的旧数据,而 dir2 包含较新的数据,但可能缺少一些原始/自定义的行/条目。这些只是由另一个程序读取的数据文件,因此它不是代码,但我仍然不希望由于重复而产生几 GB 的额外不需要的数据。这是一台仅具有 cli 和直接/完整 ssh 根访问权限的服务器(CentOS 6)。

任何帮助,将不胜感激。

答案1

为了Debian发行版软件包john包括unique,其工作原理类似于未分类 uniq

apt install john

安装后,运行:

cat /dir1/file2 /dir2/file2 | unique foo ; cat foo

输出:

mmm
nnn
ooo
zzz
yyy

请注意*尼克斯utils go 目前的版本unique(v1.8.0-2)比较简陋,无法输出到标准输出或任何现有文件。因此foo需要一个新的临时输出文件名。

相关内容