egrep和grep和正则表达式
grep文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行 grep常用用法1:查找特定字符串 查找/etc/passwd文件中包含“root”的行 grep --color -n "root" /etc/passwd grep还能用管道处理前面命令输出的信息上面的命令可以: cat /etc/passwd | grep --color -n "root" 2:“.”匹配任意单个字符 /etc/passwd文件中以r开头以t结尾中间包含两个任意字符的字符 grep --color -n "r..t" /etc/passwd grep常用用法3“$”锚定行尾 bash结尾的行 grep --color -n "bash$" /etc/passwd 4“^” 锚定行首 r开头的行
所以^$表示匹配空白行 5“<” 锚定词首,“>”锚定词尾,”*“ 匹配前面出现的字符任意次 t结尾的单词 grep --color "&;r[a-z]*t&;" /etc/passwd 因为<,>是特殊符号所以加转意 6 匹配前面出现的字符特定次数 {m}:匹配m次{m,n}m到n次 {m,}: 至少{0,n}:至多r开头中间有1到5个任意字符以t结尾的字符串 7 “()”分组7 在判断前面的字符出现的次数时()里面的是一起出现的 如:匹配文件123中的8080或80 grep --color -n "&;(80){1,2}&;" 123
8 “1”引用前面第一个小括号里匹配到的所有内容,“2”就是第二个 查找系统中uid=gid的用户 grep用法9 []:指定范围内的任意单个字符 [0-9]=[[:digit:]]所有数字 [a-z]=[[:lower:]]所有小写字母 [A-Z]=[[:upper:]]所有大写 [[:alpha:]]任何数字和字母 [[:alnum:]]所有字母 [[:space:]]空格 [[:punct:]]标点符号 [^]:指定范围外的任意单个字符 /etc/passwd中的所有数字:grep --color=auto "&;[0-9]{1,}&;" /etc/passwd /etc/passwd中以不是r开头的行:grep--color=auto “^[^r]” /etc/passwd egrep和grep一样只是{}()等特殊符号不用加进行转意而且egrep支持“|” 进行“或”比对比如:查找文件中带有good或gold的行 egrep “good|gold” flie 也可以写成 egrep “go(o|l)d” file 能力有限可能有的例子写错了,但是符号表示的意思没错,欢迎指正 贴点转载的练习 1、显示/proc/meminfo文件中以大小写s开头的行; # grep "^[sS]" /proc/meminfo # grep -i "^s" /proc/meminfo 2、取出默认shell为非bash的用户; # grep -v "bash$" /etc/passwd | cut -d: -f1 3、取出默认shell为bash的且其ID号最大的用户; # grep "bash$" /etc/passwd | sort -n -t: -k3 | tail -1 | cut -d: -f1 4、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; # grep "^#[[:space:]]{1,}[^[:space:]]{1,}" /etc/rc.d/rc.sysinit 5、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; # grep "^[[:space:]]{1,}" /boot/grub/grub.conf 6、找出/etc/passwd文件中一位数或两位数; # grep --color=auto "&;[0-9]{1,2}&;" /etc/passwd 7、找出ifconfig命令结果中的1到255之间的整数; # ifconfig | grep -E --color=auto "&;([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])&;" 8、查看当前系统上root用户的所有信息; # grep "^root&;" /etc/passwd 9、添加用户bash和testbash、basher,而后找出当前系统上其用户名和默认shell相同的用户; # grep --color=auto "^([[:alnum:]]{1,})&;.*1$" /etc/passwd 10、找出netstat -tan命令执行的结果中以“LISTEN”或“ESTABLISHED”结尾的行; 11、取出当前系统上所有用户的shell,要求:每种shell只显示一次,且按升序显示; # cut -d: -f7 /etc/passwd | sort -u (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |