sort 排序
可以依据不同的数据型态来排序
[root@Adley ~]# sort [-fbMnrtuk] [file or stdin]
选项不参数:
-f :忽略大小写
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n : 使用『纯数字』进行排序(默认是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,预设是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思
uniq 去重
去重+统计数量
可以将重复的数据仅列出一个来显示,且可以进行统计
#uniq [-ic]
选项:
-i //忽略大小写
-c //进行统计
例如:我想要知道每个人登入服务器的总次数,可以这样:
[root@Adley ~]# last | cut -d ' ' -f1 |sort|uniq -c
cut切片
tr 字符转换
将冒号删除
[root@Adley ~]# head -n 1 /etc/passwd |tr -d ':'
rootx00root/root/bin/bash
将所有的小写变成大写
[root@Adley ~]# head -n 1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@Adley ~]# head -n 1 /etc/passwd |tr '[a-z]' '[A-Z]'
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
xargs 参数替代
可以将标准的输出变为后面命令的参数
在与 find 命令配合是 xargs 与 -exec 的区别:
-exec: 在某些系统中,他对于所传递给他的参数的长度有限制,容易出现“参数太长”或“参数列溢出” 等错误信息;并且 exec 会同时发起多个进程,这样就会耗系统资源
xargs: 只会发起一个进程,节省了系统的资源
# xargs [-epn] command
选项
-O 把空格字符改变为一般字符
-e 后面跟字符串,当xargs分析到字符串时就停止,格式为 -e'test' 中间没有空格
-p 执行时询问
-n 后面接数字,定义command执行时,要使用几个参数
找出 /sbin 目录下的文档,并使用 ls -l 列出详细数据
#find /sbin -perm +7000 | ls -l //这样是不行的,因为 ls 命令不支持管道
#find /sbin -perm +7000 |xargs | ls -l //这样就行了
把找到的文件复制到 /test 目录下
#find /sbin -perm +7000 | cp `xargs` /test
#find /sbin -perm +7000 | cp $(xargs) /test
关于减号 - 的用途
可以作为 stdout 和 stdin
#tar -cvf - /home | tar -xvf -
简单示例:
1 统计来源 IP top 10
就是统计处理访问服务器最多的前十名,并且有访问的次数
[root@Adley ~]# awk '{print $1}' nginx_app.log |uniq -c|sort -nr|head
2. 统计出 4xx 状态码的 url
[root@Adley ~]# awk '$9>=400 {print $7,$9}' nginx_app.log |uniq -c|sort -nr|head
3. 统计被访问的url 的 top10
[root@Adley ~]# awk '{print $7}' nginx_app.log |uniq -c |sort -nr|head
或者
[root@Adley ~]# cut -d" " -f 7 nginx_app.log |uniq -c|sort -nr|head