Linux实现对IP地址实现去重排序(sort+uniq)

文章介绍了在Linux环境中如何使用uniq和sort命令来处理日志文件,通过sort进行排序,然后用uniq进行去重操作,以解决业务被刷的问题。uniq的参数如-c(计数)、-d(仅显示重复行)等被详细说明,同时sort的参数如-n(数值排序)、-k(指定排序字段)等也进行了讲解,并提供了实际操作示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

最近这两天凌晨都被电话告警弄起来了,今天排查了一下,是因为业务凌晨被刷了,nginx日志已经导出了当时所有的请求日志,需要手动通过Linux来进行一个去重排序

一、先来了解一下uniq命令的用法

uniq是Linux中的一个命令,用于对文本进行去重操作。uniq命令支持以下参数:

  • -c:在每行前面显示该行在文件中出现的次数。
  • -d:仅显示重复的行。
  • -u:仅显示不重复的行。
  • -i:忽略大小写。
  • -f N:忽略前N个字段。
  • -s N:从第N个字符开始比较。
  • -w N:比较前N个字符

需要注意的是,uniq命令默认对相邻的重复行进行去重操作。如果需要对整个文件进行去重操作,可以先使用sort命令对文件进行排序,然后再使用uniq命令进行去重操作。例如:

[root@VM-234-68-centos ~]$ sort file.txt | uniq
101.224.249.163
101.228.8.16
101.229.128.179
101.242.92.213
101.71.38.236
101.80.97.74
101.88.17.35
101.88.66.181

在上面的命令中,file.txt是需要去重的文本文件。sort命令用于对文件进行排序,uniq命令用于去重。

另外,如果需要对文件进行去重操作,并显示每行在文件中出现的次数,可以使用以下命令:

[root@VM-234-68-centos ~]$ sort file.txt | uniq -c
      1 101.224.249.163
      1 101.228.8.16
      1 101.229.128.179
      9 101.242.92.213
     12 101.71.38.236
      2 101.80.97.74
      2 101.88.17.35

在上面的命令中,-c参数表示在每行前面显示该行在文件中出现的次数。


二、继续来了解sort命令的用法

sort是Linux中的一个命令,用于对文本文件进行排序操作。sort命令支持以下参数:

  • -b:忽略行首空格。
  • -d:按照字典序进行排序。
  • -f:忽略大小写。
  • -g:按照数值大小进行排序。
  • -i:忽略非打印字符。
  • -M:按照月份名称进行排序。
  • -n:按照数值大小进行排序。
  • -r:倒序排序。
  • -t:指定字段分隔符。
  • -k:指定排序字段。
    需要注意的是,sort命令默认按照字典序进行排序,因此如果需要按照数值大小进行排序,可以使用-n参数。例如:
sort -n file.txt

在上面的命令中,file.txt是需要排序的文本文件。-n参数表示按照数值大小进行排序。
另外,如果需要按照多个字段进行排序,可以使用-t和-k参数。例如:

sort -t , -k 2,2n -k 1,1 file.txt

在上面的命令中,-t ,表示使用逗号作为字段分隔符,-k 2,2n表示按照第二个字段的数值大小进行排序,-k 1,1表示按照第一个字段的字典序进行排序。
需要注意的是,sort命令会将排序结果输出到标准输出中。如果需要将排序结果保存到文件中,可以使用重定向符号>。例如:

sort file.txt > sorted.txt

三、实践

[root@VM-234-68-centos ~]$ cat file.txt |sort |uniq -c | sort -rn | more
    180 59.83.208.107
    178 180.101.245.252
    178 180.101.245.248
    172 220.196.160.76
    168 220.196.160.95
    166 220.196.160.124
    162 220.196.160.61
    160 220.196.160.51
    158 180.101.245.249
    156 220.196.160.96
    156 220.196.160.144
    156 180.101.244.13
    151 59.83.208.103
    150 180.101.245.247
    150 180.101.244.12
    148 180.101.244.14
    146 59.83.208.108
    144 220.196.160.45
    144 180.101.244.16
    142 59.83.208.104
    140 220.196.160.151
    138 220.196.160.65
    138 220.196.160.101
    138 180.101.245.250
    134 220.196.160.83
    134 220.196.160.53
    134 180.101.245.253
    134 180.101.245.246
    132 220.196.160.154
    128 220.196.160.146
    128 220.196.160.117
    126 59.83.208.105
    126 180.101.245.251
    122 180.101.244.15
    120 59.83.208.106
    118 220.196.160.84
    114 220.196.160.125
    108 220.196.160.73
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘先生我在呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值