Python 查找并删除多个文件中的重复内容

Python 查找并删除多个文件中的重复内容,python,linux,bash,Python,Linux,Bash,我有许多包含IP、MAC、主机名和其他数据的文件ACL 重要提示:问题在于文件中的内容重复。没有重复的行 示例:只有一个文件,但我有几个ACL 192.168.1.20;08:00:00:00:00:01;peter 192.168.1.21;08:00:00:00:00:01;android 192.168.1.21;08:00:00:00:00:02;john 192.168.1.22;08:00:00:00:00:03;julia 192.168.1.23;08:00:00:00:00:0

我有许多包含IP、MAC、主机名和其他数据的文件ACL

重要提示:问题在于文件中的内容重复。没有重复的行

示例:只有一个文件,但我有几个ACL

192.168.1.20;08:00:00:00:00:01;peter
192.168.1.21;08:00:00:00:00:01;android
192.168.1.21;08:00:00:00:00:02;john
192.168.1.22;08:00:00:00:00:03;julia
192.168.1.23;08:00:00:00:00:04;android
包含重复内容的行。这就是我想要的。告诉我此结果的命令:

192.168.1.20;08:00:00:00:00:01;peter
192.168.1.21;08:00:00:00:00:01;android
192.168.1.21;08:00:00:00:00:02;john
192.168.1.23;08:00:00:00:00:04;android
将内容复制到上面的一行是08:00:00:00:01、192.168.1.21和android

用于在acls文件夹中查找重复项的命令无效:

cat /home/user/files/* | sort | uniq -c | head -20
我已经试过了,但结果并不像预期的那样

首先,至少我想检测具有重复内容的行,如果可能,删除具有重复内容的行


谢谢

P>考虑到你对你认为的重复的评论,这应该是相近的:

$ a=$(cut -d';' -f1 c.txt |sort |uniq -d)
$ b=$(cut -d';' -f2 c.txt |sort |uniq -d)
$ c=$(cut -d';' -f3 c.txt |sort |uniq -d)
$ echo "$a:$b:$c"
192.168.1.21:08:00:00:00:00:01:android
但实际上,我们谈论三种不同的情况。 变量a只包含重复的IP,忽略rest字段。 变量b只包含重复的MAC,忽略rest字段。 变量c只包含重复的主机名,忽略rest字段

我看不出这个令人困惑的信息有什么意义

唯一的解释是,您以后可以像这样使用grep:

$ grep -v -e "$a" -e "$b" -e "$c" c.txt
192.168.1.22;08:00:00:00:00:03;julia;222222
要从原始文件中获取具有一个甚至未使用过一次的完全唯一的IP、一个完全唯一的MAC和一个完全唯一的主机名的行


这就是您想要实现的吗?

没有重复的内容。所有行都不同内容应该完全相同,还是只比较一些列?是否要就地修改文件,或仅获取唯一列表?如果一行出现两次,它应该只出现一次还是被完全删除?@gus27或Unix&Linux,因为bash,请为问题提供最小的可验证输入和预期输出。awk magic eh?如果你不知道的话,它看起来非常混乱。谢谢。我认为使用grep就足够了,满足我的需要。你可以使用cut反转列:grep-v-e$a-e$b-e$c c.txt | cut-d''-f2,1,3,4。要匹配多个文件,将c.txt替换为*.txt或*或/directory/*不起作用。例如:grep-v-e$a | cut-d''-f 2,3,4格式a;08:00:00:00:00:03;192.168.1.22;朱莉娅;2222列:mac;知识产权;主机是2,3,4,变量是a=$cut-d';'-f2,3,4/directory/*| sort | uniq-d。我如何在一个命令行中不使用变量就完成它呢?grep-v-e$a | cut-d''-f2,3,4将不起作用,因为您需要在$a之后向grep提供一个文件或目录。我有点困惑到底是什么不起作用。。。也许最好发布一个新问题来描述你的新问题。备注:在注释中使用反勾号来格式化内联代码。我发现了类似的解决方案:awk-F\;'{print$2}'*| sort | uniq-d与$3和$4相同,谢谢。