容易混,记下来
1,命令查找
# which ls #查找ls命令的绝对路径
# whereis ls #查找命令的路径、帮助手册、等
# whereis -b ls #仅显示命令所在的路径
# type -a ls #查看命令的绝对路径(包括别名)
2,sort 分类
选项 -r
倒序 -n,按数字排序 -t,指定分隔符(默认空格) -k,【指定第几列, 指定几列几字符(指定1,1 3.1,3.3)】
例如
cat >> file2.txt <
oldxu:20
oldguo:10
oldli:30
oldboy:0
EOF
[root@oldboy ~]# sort -t ":" -k2 -nr file2.txt | head -3
oldli:30
oldxu:20
oldguo:10
3,uniq 去重
选项 -c
例如
( 排序 去重 统计 打印top3 = 排名前3 )
[root@oldboy ~]# cat >>ip2.txt<
192.168.3.1
192.168.3.2
192.168.3.3
192.168.2.20
192.168.2.21
192.168.2.22
192.168.0.151
192.168.0.151
192.168.0.152
192.168.0.153
192.168.0.151
192.168.2.22
192.168.1.10
192.168.1.11
192.168.1.12
192.168.0.151
192.168.1.1
192.168.2.2
192.168.0.151
192.168.3.3
192.168.2.20
192.168.1.21
192.168.0.151
192.168.2.22
192.168.0.151
192.168.2.22
192.168.1.152
192.168.0.153
192.168.3.10
192.168.1.11
192.168.2.22
192.168.3.12
EOF
[root@oldboy ~]# sort ip2.txt | uniq -c | sort -nr | head -3
7 192.168.0.151
5 192.168.2.22
2 192.168.3.3
每个命令能做的事情都很单一,所以需要使用 管道技术 将命令与命令之间衔接起来,这样能做的事情就是无限的。#必须先排序(不排序相同的内容不再一起,无法去重)
4,cut 过滤
#选项:
-d 指定分隔符
-f 数字,取第几列 –f3,6三列和6列
-c 按字符取(空格也算)
1.产生文件
[root@oldboy ~]# echo "Im oldxu, is QQ 552408925" > oldboy.txt
2.需求:过滤出oldboy.txt文件里 oldxu以及552408925
3.如何实现:
实现方法1:
[root@oldboy ~]# cut -d " " -f 2,5 oldboy.txt
oldxu, 552408925
[root@oldboy ~]# cut -d " " -f 2,5 oldboy.txt | sed 's#,##g'
oldxu 552408925
实现方法2:
[root@oldboy ~]# awk '{print $2,$5}' oldboy.txt
oldxu, 552408925
[root@oldboy ~]# awk '{print $2,$5}' oldboy.txt | sed 's#,##g'
oldxu 552408925
实现方法3: awk处理
[root@oldboy ~]# awk -F "," '{print $1,$2}' oldboy.txt | awk '{print $2,$5}'
oldxu 552408925
[root@oldboy ~]# awk -F "[ ,]" '{print $2,$6}' oldboy.txt
oldxu 552408925
高级用法
[ ,]+ +表示重复 前面的字符一次或多次
空格算一个分隔符
逗号算一个分隔符
空格和逗号挨在一起,也算一个分隔符
空格逗号空格,全算一个分隔符
[root@oldboy ~]# awk -F "[ ,]+" '{print $2,$5}' oldboy.txt
oldxu 552408925
5,wc
#选项:
-l显示文件行数
-c显示文件字节
-w显示文件单词
方法1:统计一个文件有多少行,使用wc -l
[root@oldboy ~]# wc -l /etc/services
11176 /etc/services
方法2:
[root@oldboy ~]# cat -n /etc/services | tail -1 | awk '{print $1}'
11176
方法3:
[root@oldboy ~]# grep -n ".*" /etc/services | tail -1 | awk -F ":" '{print $1}'
11176
grep cut awk 都是过滤文件或目录的内容,后面所跟选项不同,注意区分,cut 不常用。