一.grep命令选项详解
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep全称是GlobalRegularExpressionPrint,表示全局正则表达式版本,它的使用权限是所有用户。
选项介绍:
示例1:统计lsblk命令显示中磁盘总个数
lsblk|grepdisk|wc-l
示例2:在大量文件中快速过滤/etc/文件夹下包含root单词的所有文件
grep-rw'root'/etc
二.正则表达式
1.正则表达式是什么?
正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。在Linux中也就是代表我们定义的模式模板,Linux工具可以用它来过滤文本。Linux的工具(如sed编辑器或者awk程序)能够在处理数据时使用正则表达式对数据进行模式匹配,如果数据符合匹配的要求,那么就会进入下一步处理;如果数据不符合匹配的要求,就会被过滤掉。正则表达式,又称正规表达式、常规表达式
使用字符串来描述、匹配一系列符合某个规则的字符串
正则表达式组成
普通字符包括大小写字母、数字、标点符号及一些其他符号。
元字符是指在正则表达式中具有特殊意义的专用字符
2.元字符
2.1基础正则表达式常见元字符
(支持的工具:grep、egrep、sed、awk)- ^表示匹配字符串开始的位置,匹配行首
- $表示匹配字符串末尾的位置,匹配行尾
- *匹配前面子表达式0次或者多次,贪婪模式所以尽可能长
- .匹配除\n之外的任意的一个字符
- .*表示任意长度的任一字符,不包括0次
- \{n\}匹配前面的子表达式n次
2.2扩展正则表达式元字符
(支持的工具:egrep、awk、grep-E、sed-r)
字符 | 作用 |
---|---|
表示匹配前面的子表达式1次以上 | |
? | 表示匹配前面的子表达式0或者1次 |
() | 将括号里的内容看成一个整体 |
| | 以或的方式匹配字符串 |
- 表示匹配前面的子表达式1次以上
- ?表示匹配前面的子表达式0或者1次
- ()将括号里的内容看成一个整体
- |以或的方式匹配字符串