Linux Command egrep
1. 特点
基本曾则:优点(兼容性强,缺点(繁琐)) 拓展:优点(简单),缺点:(兼容性弱) egrep:grep -E
2. 举例
grep '^r' /etc/passwd----'^id' /etc/inittab----------'^HOSTNAME' /etc/sysconfig/network
grep 'localhost$' /etc/hosts #匹配以某字符结尾的内容
grep '^root\|^daemon' /etc/passwd #(基本)多条件显示内容
egrep '^root|^daemon' /etc/passwd #(扩展)多条件显示内容
grep -q '^192.168.4.4' /etc/hosts && echo "YES" || echo "NO" #选项 -q 表示 quiet(静默)的意思,结合此选项可以只做检索而并不输出,通常在脚本内用来识别查找的目标是否存在,通过返回状态 $? 来判断,这样可以忽略无关的文本信息
egrep '/sbin/nologin$' /etc/passwd ///确认是否正确 #统计本地用户中登录Shell为“/sbin/nologin”的用户个数
egrep -c '/sbin/nologin$' /etc/passwd #统计个数
egrep '/bin/bash$' /etc/passwd | wc -l #统计个数
egrep '.' /etc/rc.local #显示非空行的内容
egrep -v '.' /etc/rc.local #显示空行
egrep '^$' /etc/rc.local #显示空行
egrep 'f+' /etc/rc.loca #至少出现一次
egrep 'init(ial)?' /etc/rc.local #匹配出现init,initab的行
egrep 'stuf*' /etc/rc.local #匹配stuf后面出现任意次数的行
egrep '^r.*nologin$' /etc/passwd #.*匹配任意多个字符的行(首,尾之间)
元字符 {} —— 限定出现的次数范围
egrep '(ab){3}' brace.txt #匹配ab出现3次的行
egrep '(ab){2,4}' brace.txt #匹配ab出现2,4次的行
egrep '(ab){3,}' brace.txt #匹配ab至少出现3次的行
元字符 [] —— 匹配范围内的单个字符
egrep 'ab[cd]' brace.txt
egrep '[A-Z]' brace.tx
egrep '[^ a-zA-Z]' brace.txt
单词边界匹配
egrep '\binit\b' /etc/rc.local #同
egrep '\<init\>' /etc/rc.local #同
egrep 'll\>' /etc/rc.local
egrep 'll\b' /etc/rc.local
多个条件的组合
egrep '\<IDE\>|\<CDROM\>' /var/log/dmesg #通过dmesg启动日志查看与IDE接口、CDROM光盘相关的设备信息
egrep -i 'eth|network|bluetooth' /var/log/dmesg #通过dmesg启动日志查看蓝牙设备、网卡设备相关的信息
利用正则表达式完成检索任务
egrep -c ".*" /etc/httpd/conf/httpd.conf #总行数
egrep -c "#" /etc/httpd/conf/httpd.conf #显示注释行数
egrep -c "^$" /etc/httpd/conf/httpd.con #显示空行数
egrep -c -v '#|^$' /etc/httpd/conf/httpd.conf #显示除掉空行与注释行的行数
匹配MAC地址、邮箱地址、IP地址
echo $MAC01 | egrep -q '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}' && echo "有效" || echo "无效" #检查MAC地址是否有效
匹配邮箱地址格式:用户名与域名之间以 @ 分隔
用户名不少于3个字符,可能由字母、下划线、句点 . 、数字组成
域名应至少有一个 . 分隔,分隔的各部分至少2个字符,可能由字母、减号、数字组成
[0-9a-zA-Z_.]{3,}@[0-9a-zA-Z.-]{2,}(\.[0-9a-zA-Z-]{2,})+
egrep '[0-9a-zA-Z_.]{3,}@\ [0-9a-zA-Z.-]{2,}(\.[0-9a-zA-Z-]{2,})+' mailadd.txt #匹配有效邮箱地址
匹配主机名格式:由 . 分隔,至少包括3组字符串
每组字符串不少于2个字符,可能由字母、减号、数字、下划线组成
主机名后必须是单词边界,主机名前不能有@符号
^[^@][0-9a-zA-Z_-]{2,}(\.[0-9a-zA-Z_-]{2,}){2,}\>
egrep '^[^@][0-9a-zA-Z_-]{2,}(\.[0-9a-zA-Z_-]{2,}){2,}\>' mailadd.txt #匹配有效主机名
匹配IP地址
以 . 分隔,一共由四组十进制数构成
每组数值的范围为0-255,字符宽度为1-3位
前后必须是单词边界
\<[0-9]{1,3}(\.[0-9]{1,3}){3}\>
ifconfig | egrep '\<[0-9]{1,3}(\.[0-9]{1,3}){3}\>