sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:
  sort [-bcfMnrtk][源文件][-o 输出文件] 
ASP站长网补充说明:sort可针对文本文件的内容,以行为单位来排序。
 
参  数:
  -b   忽略每行前面开始出的空格字符。
  -c   检查文件是否已经按照顺序排序。
  -f   排序时,忽略大小写字母。
  -M   将前面3个字母依照月份的缩写进行排序。
  -n   依照数值的大小排序。
  -o<输出文件>   将排序后的结果存入指定的文件。
  -r   以相反的顺序来排序。
  -t<分隔字符>   指定排序时所用的栏位分隔字符。
  -k  选择以哪个区间进行排序。
 
例子:
 
根据访问IP统计UV
 
awk '{print $1}'  access.log|sort | uniq -c |wc -l
 
 
 
注意{print $1}部分必须使用单引号引起来。不能使用双引号。
 
2.统计访问URL统计PV
 
awk '{print $7}' access.log|wc -l
 
3.查询访问最频繁的URL
 
awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more
 
 
 
4.查询访问最频繁的IP
 
awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more
 
 
 
5.根据时间段统计查看日志
 
 cat  access.log| sed -n '/14\/Mar\/2015:21/,/14\/Mar\/2015:22/p'|more
 
 
 
注意:时间的斜线要用反斜线“\”转义
 
 如是Tomcat
 
sed -n '/2018-02-23 23:31.*/,/2018-02-23 23:32.*/p' catalina.out|more                              ##后面加more的好处是可以分批显示,不会一直刷屏
 扩展:
 
# 查询关键字
sed -n '/2019-06-27 09:55.*/,/2019-06-27 13:59.*/p' laravel.log-20190628| egrep 'request_body":"{\\"mobile'
 
# 查询关键字上下3行
 
sed -n '/2019-06-27 09:55.*/,/2019-06-27 13:59.*/p' laravel.log-20190628| egrep -C 3 'request_body":"{\\"mobile'
1 sort的工作原理
 
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
 
[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear
 
2 sort的-u选项
 
它的作用很简单,就是在输出行中去除重复行。
 
[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
pear
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear
pear
[rocrocket@rocrocket programming]$ sort -u seq.txt
apple
banana
orange
pear
 
pear由于重复被-u选项无情的删除了。
 
3 sort的-r选项
 
sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。
 
[rocrocket@rocrocket programming]$ cat number.txt
1
3
5
2
4
[rocrocket@rocrocket programming]$ sort number.txt
1
2
3
4
5
[rocrocket@rocrocket programming]$ sort -r number.txt
5
4
3
2
1
 
4 sort的-o选项
 
由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。
 
但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。
 
[rocrocket@rocrocket programming]$ sort -r number.txt > number.txt
[rocrocket@rocrocket programming]$ cat number.txt
[rocrocket@rocrocket programming]$
看,竟然将number清空了。
 
就在这个时候,-o选项出现了,它成功的解决了这个问题,让你放心的将结果写入原文件。这或许也是-o比重定向的唯一优势所在。

dawei

【声明】:九江站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。