如何比较两个(模糊的)文件列表并打印重复项?

如何比较两个(模糊的)文件列表并打印重复项?

我有两个文件列表。backup.txtbackup2.txt 一些条目并不完全相同,因此很难使用diff或找到重复项uniq

例子:

:::backup.txt:::
auser_backup
auser_backup2
buser_backup
cuser_backup

:::backup2.txt:::
auser.backup
auser.backup.2
buser
cuser

我想知道是否有办法比较这些不太相似的文件列表,其中auser_backupauser.backupauser_backup2以及auser.backup.2会被视为重复。

也许还有另一个步骤来重命名所有条目,以便格式正确?我有点不知所措。

答案1

您必须对文件进行预处理以“修复”异常:

fixfile() { sed -r 's/([[:alpha:]])([[:digit:]]+)$/\1.\2/; s/\./_/g' "$1"; }
comm -12 <(fixfile backup.txt | sort) <(fixfile backup2.txt | sort)
auser_backup
auser_backup_2

相关内容