我正在尝试自动化我通常手动完成的工作任务,即从多个用户的权限中获取数据库输出并比较它们以查看它们的共同点。我现在有一个使用 comm 和 paste 的脚本,但它并没有给我我想要的所有输出。
部分问题在于 comm 一次只处理两个文件,我需要至少比较三个文件才能找到趋势。我还需要确定三个中的两个是否有共同点,但第三个没有(因此比较两个 comm 命令的输出不起作用)。我需要这些以逗号分隔的值,以便可以将其导入 Excel。每个用户都有一个专栏,最后是他们共同拥有的所有内容的列表。如果 comm 可以比较两个以上的文件(并显示三分之二的比较),它将完美地工作。
除了代码之外,我还必须从原始 csv 文件中清除所有多余的内容,这是迄今为止我比较四个用户时所拥有的内容。这是非常低效的,但这是我所知道的。
cat foo1 | sort > foo5
cat foo2 | sort > foo6
cat foo3 | sort > foo7
cat foo4 | sort > foo8
comm foo5 foo6 > foomp
comm foo7 foo8 > foomp2
paste foomp foomp2 > output2
sed 's/[\t]/,/g' output2 > output4.csv
cat output4.csv
现在这会输出两个用户,他们的相似之处和不同之处,然后对另外两个用户执行相同的操作并将其粘贴在一起。这比手工做的效果更好,但我知道我可以做得更多。
一个示例输入文件将类似于:
用户 1
Active Directory
Internet
S: Drive
Sales Records
用户 2
Active Directory
Internet
Pricing Lookup
S: Drive
用户 3
Active Directory
Internet
Novell
Sales Records
他们有共同的 AD 和 Internet,三分之二的有销售记录访问权限和 S:驱动权限,每个只有一个有 Novell 和定价访问权限。
有人可以帮我解决我所缺少的吗?