grep及基本正则表达式

正则表达式就是为了处理大量的文本或字符串而定义的一套规则和方法

对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,抑或查询某个日志文件分析其内容,都会用到正则表达式

Linux中的正则表达式,最常应用正则表达式的命令是grep(egrep),sed,awk

正则表达式分为两种:

基本正则表达式(BRE,basic regular expression)

扩展正则表达式(ERE,extended regular expression)

grep常用基本参数及作用:

–color 匹配到的字符串显示颜色

grep 正则表达式匹配小括号里面的内容_大小写


-i 忽略字符大小写

grep 正则表达式匹配小括号里面的内容_grep及基本正则表达式_02


-o 仅显示匹配的字串

grep 正则表达式匹配小括号里面的内容_bash_03


-v 反向选取,即显示不匹配的行

grep 正则表达式匹配小括号里面的内容_bash_04


-E 使用扩展正则表达式

-n 显示行号

grep 正则表达式匹配小括号里面的内容_bash_05


正则表达式常用:

^word 搜寻word开头的行

grep 正则表达式匹配小括号里面的内容_bash_06


bash$ 搜寻bash结尾的行

grep 正则表达式匹配小括号里面的内容_大小写_07


. 匹配任意一个字符

grep 正则表达式匹配小括号里面的内容_正则表达式_08


\ 转义字符

grep 正则表达式匹配小括号里面的内容_grep及基本正则表达式_09


* 前面的一个字符重复0到多次

grep 正则表达式匹配小括号里面的内容_大小写_10


[list] 匹配一系列字符中的一个

grep 正则表达式匹配小括号里面的内容_正则表达式_11


[n1-n9] 匹配一个字符范围中的一个字符

grep 正则表达式匹配小括号里面的内容_正则表达式_12


[^list] 匹配字符集以外的字符

grep 正则表达式匹配小括号里面的内容_大小写_13


{n1,n2} 前面的单个字符至少n1次,最多n2次

grep 正则表达式匹配小括号里面的内容_bash_14


<word 单词的开头

grep 正则表达式匹配小括号里面的内容_正则表达式_15


word> 单词的结尾

grep 正则表达式匹配小括号里面的内容_大小写_16


‘ ’ 强引用,引号的内容不变
 “ ” 弱引用,变量会替换
 [[:alnum:]] 代表英文大小写字符即数字,即0-9,a-z,A-Z

grep 正则表达式匹配小括号里面的内容_大小写_17


[[:alpha:]] 代表任何英文大小写字符,即A-Z,a-z
[[:space:]] 任何会产生空白的字符,包括空白键,[Tab]等
[[:digit:]] 代表数字,即0-9
[[:lower:]] 代表小写字符,即a-z
[[:upper:]] 代表大写字符,即A-Z
测试:
 1.显示/proc/meminfo文件中以大写或小写S开头的行
 grep -i ‘s’ /proc/meminfo
 2.显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户
 grep -v “/sbin/nologinKaTeX parse error: Expected 'EOF', got '\/' at position 86: …号最大的用户 grep “\̲/̲bin\/bash”/etc/passwd | sort
 4.找出/etc/passwd文件中的一位数或两位数
 grep “<[0-9]{1,2}>” /etc/passwd
 5.显示/boot/grub/grub.conf中以至少一个空白字符开头的行
 grep “1{1,}” /boot/grub/grub.conf
 6.找出netstat -tan命令执行结果中以’LISTEN’结尾的行
 netstat -tan | grep “LISTEN$”
 7.显示当前系统上root、user1用户的默认shell
 grep -E“(root|user1)” /etc/passwd | cut -d ‘:’-f7
 8.找出/etc/rc.d/init.d/functions文件中某单词后跟一组小括号"()"行 
 grep “<[[:alpha:]]*>()” /etc/rc.d/init.d/functions
 9.找出ifconfig命令结果中的1-255之间的数字
 ifconfig|grep-E“<([1-9]|[1-9][0-9]|[1-1][0-9][0-9]|[2-2][0-5][0-5])>”

  1. [:space:] ↩︎