一、grep与egrep
grep -i ##忽略字母大小写
-v ##条件取反
-c ##统计匹配行数
-q ##静默,无任何输出
-n ##匹配结果所在行号
基本元字符:^ $
过滤/etc/passwd以root开头的行,以/bin/bash结尾的行
统计有/sbin/nologin的行数,显示有/sbin/nologin的行号
基本元字符:. ##过滤非空行
基本元字符: + ? *
egrep '3+' haha ##输出包括3,33,333....,即至少出现一次
egrep 'color(ful)?' haha ##末尾的ful最多匹配一次,也可以没有
元字符:{} []
we后面匹配a或者b的行,匹配含有we2次及以上,匹配we后有任意大写字母
二、cut命令
cut -d ##指定分隔符
cut -d : -f 1-3 /etc/passwd ##指定分隔符为:,显示第1到3列
cut -c 1,4 /etc/passwd ##显示第一和第四个字符
练习:获取主机IP
练习:检测网络
ping -c1 -w1 172.25.254.$1 > /dev/null && echo "172.25.254.$1 is up" || echo "172.25.254.$1 is down"
&& 前面命令成功再执行后面的
|| 前面命令失败则执行后面的
三、sort命令
sort
-n ##纯数字排序
-r ##倒叙
-u ##去掉重复数字
-t ##制定分割符
-o ##输出到制定文件
-k ##指定要排序的列
四、uniq命令:对重复字符处理
uniq
-u ##显示唯一的行
-d ##显示重复的行
-c ##每行显示一次并统计重复次数
练习:找出/tmp下最大的文件,只取文件名
五、test命令
test "$a" == "$b" 等价 ["$1" == "$2"]
echo $?
["$1" == "$2"] ##等于 ["$1" != "$2"] ##不等于
["$1" -eq "$2"] ##等于 ["$1" -ne "$2"] ##不等于
["$1" -le "$2"] ##小于等于 ["$1" -ge "$2"] ##大于等于
["$1" -gt "$2"] ##大于 ["$1" -lt "$2"] ##小于
-a与-o或-z非
["$a" -ne "$b" -a "$a" -gt "$b"] ##与条件
["$a" -ne "$b" -o "$a" -gt "$b"] ##条件至少满足一个
判断一个数是否在0-10内
[-z "$1"] ##是否为空
[-e "file"] ##是否存在
[-f "file"] ##普通文件
[-b "file"] ##块设备
[-S "file"] ##socket
[-c "file"] ##字符设备
[-L "file"] ##软连接
练习:判断文件类型
测试: