背景
最近这两天凌晨都被电话告警弄起来了,今天排查了一下,是因为业务凌晨被刷了,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