介绍
作用:
- 检查字符串是否包含了特定的字符
- 经常用在日志处理等操作
- 经常结合grep,sed,awk命令使用
构成
- 普通字符,例如字母a~字母z
- 特殊字符,又称为元字符
由普通字符与特殊字符构成。
grep命令的简单使用
正则表达式的分类
- Basic REGEXP 基本正则表达式
- Extended REGEXP 扩展正则表达式
grep介绍以及使用
作用:对文件中的内容进行逐行过滤,有多少行就会执行多少次grep
以root.txt文件为例,文件内容如下:
i am not root
are you root?
She has rooted her device.
bye,bye!
grep "root" root.txt
这行命令会输出带有"root"的行,结果如下
i am not root
are you root?
She has rooted her device.
语法格式:
grep [options] PATTERN file
说明:
- options 是选项
- PATTERN 是匹配条件或内容
- file 是文件名
选项:
- -i :忽略大小写
- --color :匹配内容加高亮显示
- -v :取反,就是匹配出不包含内容的行
- -o :只显示被模式匹配到的字符串本身
grep -o "root" root.txt | wc -l
grep -o配合wc命令可以统计字符串"root"在文件中出现的次数
- -E :扩展正则表达式
点号
通配符与正则表达式的区别
- 通配符是对文件名进行匹配
- 正则表达式是对文件的内容进行匹配
- 正则表达式通常结合grep,sed,awk使用
单字符匹配
- . :匹配任意单个字符。例如 "r..t" ,中间的点号可以是字符、数字、空格、字母。通过grep可以匹配相应字符的行。
grep "r..t" root.txt
结果如下:
i am not root
are you root?
She has rooted her device.
一个点就代表一个任意字符,多少个点就代表多少个任意字符
- [] :匹配范围内的任意一个字符
[:digit:] 表示任意一个数字
[:lower:] 表示任意一个小写字母
[:upper:] 表示任意一个大写字母
[:space:] 表示一个空白字符
[:punct:] 表示任意一个标点字符
[:alpha:] 表示任意一个字母(包含所有字母)
[:alnum:] 表示任意一个字母或数字
- [^] :表示任意一个范围外的任意字符
范围内的单个字符
语法
[] : 匹配指定范围外的任意单个字符
[^] : 匹配指定范围外的任意单个字符
[:digit:] | 表示0~9任意一个数字, 可以用[1234567890]或[0-9]表示 |
[:lower:] | 表示任意一个小写字母,可以用[abcde...xyz]或[a-z]表示 |
[:upper:] | 表示任意一个大写字母,可以用[ABCD...XYZ]或[A-Z]表示 |
[:space:] | 表示一个空白字符 |
[:punct:] | 表示任意一个标点字符 |
[:alpha:] |
表示任意一个大小写字母,可以用[abc...xyzABC...XYZ]或[a-zA-Z]表示 |
[:alnum:] | 表示任意一个字母或数字,可以用[abc...xyzABC...XYZ123...789]或[a-zA-Z0-9]表示 |