我有一个包含此类条目的日志文件
192.168.1.1;query=/etc/security/limits.conf;date=02.03.16
192.168.1.1;query=/etc/security/limits.conf;date=01.06.15
192.168.1.2;query=/etc/security/limits.conf;date=02.03.16
192.168.1.1;query=/etc/security/limits.conf;date=12.07.15
192.168.1.2;query=/etc/security/limits.conf;date=03.01.16
192.168.1.1;query=/etc/security/limits.conf;date=02.11.15
我只需要提取每个 IP 只出现一次的 uniq 条目。所以应该是
192.168.1.1;query=/etc/security/limits.conf;date=02.03.16
192.168.1.2;query=/etc/security/limits.conf;date=02.03.16
不管IP之后会发生什么。日志文件很长。我想它应该是组合优尼克-u命令。
答案1
假设您的日期采用 mm.dd.yy 格式
sort -k1,1 -k3.12,3.13nr -k3.6,3.7nr -k3.9,3.10nr -t';' file |
sort -k1,1 -u -t';'
192.168.1.1;query=/etc/security/limits.conf;date=02.03.16
192.168.1.2;query=/etc/security/limits.conf;date=03.01.16
按 IP 字段排序,然后按相反顺序按日期字段排序(因此每个 IP 的最新日期首先排序)。将其通过管道传输到另一个sort
,这次是通过 IP 字段,但指定-u
以确保返回每个 IP 的一条记录。由于-u
意味着稳定排序,因此返回每个 IP 的第一条记录(具有最近日期的记录)
另一方面,如果您的日期采用 dd.mm.yy 格式
sort -k1,1 -k3.12,3.13nr -k3.9,3.10nr -k3.6,3.7nr -t';' file |
sort -k1,1 -u -t';'
192.168.1.1;query=/etc/security/limits.conf;date=02.03.16
192.168.1.2;query=/etc/security/limits.conf;date=02.03.16