1、grep,egrep
grep
-i ##忽略字母大小写
-v ##条件取反
-c ##统计匹配行数
-q ##静默,无任何输出
-n ##显示匹配结果所在的行号
这里我们需要注意的是,引文egrep的功能包括grep的功能,所以我们默认情况和下可以使用egrep,下面来理解一下参数q的用法
grep '172.25.254.250' /etc/hosts && echo 'YES' || echo 'NO'
当带上参数q的时候,就没有了上图中标红的部分
grep -q '172.25.254.250' /etc/hosts && echo 'YES' || echo 'NO'
2.基本元字符:^ $
egrep -m10 '/sbin/nologin' /etc/passwd ##查看含有/sbin/nologin行的前10行
egrep -c '/sbin/nologin' /etc/passwd ##含有/sbin/nologin的行数
egrep -m10 'sbin$' lcz ##匹配以sbin结尾的行
egrep '.' lcz ##查看非空行
egrep -v '.' wsp ##查看空行
egrep '^$' wsp ##查看空行
基本元字符: + ? *
egrep 'f+' lcz ##输出包括f,ff,fff....,即至少出现一次
egrep 'color(ful)?' lcz ##末尾的ful最多出现一次,也可以没有
元字符:{}
egrep '(we){3}' lcz ##查找连续三个we的字段
egrep '(we){2,4}' lcz ##查找连续的2-4个we
egrep '(we){3,}' lcz ##匹配连续三个以上的we字段
egrep '(we)[ab]' lcz ##匹配wea或者web
egrep '[A-Z]' lcz ##匹配所有的大写字母
3.cut
cut -d ##指定分隔符
cut -d : -f 1-3 /etc/passwd ##指定分隔符为:,显示第1到3列
cut -c 1,4 /etc/passwd ##显示每一行的第一和第四个字符
练习,获取主机ip
ifconfig eth0 | grep "inet " | awk '{print $2}' ##这里的awk可以直接获取第二个变量
ifconfig eth0 | grep "inet " | cut -d " " -f 10
4.sort命令:排序
sort
-n ##纯数字排序
-r ##倒序
-u ##去掉重复数字
-o ##输出到指定文件中
-t ##指定分隔符
-k ##指定要排序的列
为了做实验,我这里自己编写了一个文件,然后使用sort命令来排序
sort lcz ##按照每行第一个数字的大小进行排序
sort -n lcz ##纯数字排序
sort -u westos ##去掉重复的数字
从这里开始,再次修改lcz文件,修改为下图
sort -t : -k 2 lcz ##以:分割幅,对第二列进行排序
sort -nt : -k 2 westos ##以:分割幅,对第二列进行纯数字排序
sort -nt : -k 2 westos -o /mnt/file ##将排序结果输出到/mnt/file
5)uniq命令:对重复字符处理
uniq
-u ##显示唯一的行
-d ##显示重复的行
-c ##每行显示一次并统计重复次数
练习:将/tmp目录中的文件取出最大的
ls -Sl /tmp/ | head -2 | cut -d " " -f 9
练习:筛选出cpu占用排名前五的进程
ps ax -o %cpu,pid --sort=-%cpu | grep -v PID | head -n6
ok~