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

2024-05-16 21:19:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有许多文件(ACL)包含IP、Mac、主机名和其他数据。你知道吗

重要提示:问题是关于文件中的“重复内容”。没有“重复行”

示例:(只有一个文件,但我有几个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

我尝试过使用这个python script,但是结果并不像预期的那样

首先(至少)我想检测具有重复内容的行,并且(如果可能)删除具有重复内容的行。你知道吗

谢谢


Tags: 文件数据命令ip文件夹示例内容mac
1条回答
网友
1楼 · 发布于 2024-05-16 21:19:53

考虑到你对你认为是重复的东西的评论,这应该很接近:

$ 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,忽略其余字段。
变量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和一个完全唯一的主机名的行。你知道吗

这就是你想要达到的目标吗?你知道吗

相关问题 更多 >