目录
grep
通配符
正则表达式
grep
grep家族有三大成员分别为:
grep:支持使用基本正则表达式。
egrep:支持使用扩展正则表达式。
fgrep:不支持使用正则表达式,即所有的正则表达式中的元字符都将作为一般字符,仅仅
拥有其字面意义,不再拥有特殊意义
grep命令的基本语法如下:grep [options] pattern [file…]
[options]选项 | 作用 |
-n | 显示行号 |
-o | 只显示匹配的内容 |
-q | 静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 |
-l | 如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc |
-A | 如果匹配成功,则将匹配行及其后n行一起打印出来 |
-B | 如果匹配成功,则将匹配行及其前n行一起打印出来 |
-C | 如果匹配成功,则将匹配行及其前后n行一起打印出来 |
--color | 高亮颜色显示匹配到的字符串 |
-c | 如果匹配成功,则将匹配到的行数打印出来 |
-E | 等于egrep,扩展 |
-i | 忽略大小写 |
-v | 取反,不匹配 |
-w | 匹配单词 |
-r | 递归搜索,不仅搜索当前目录,还要搜索其各级子目录 |
-s | 不显示关于不存在或者无法读取文件的错误信息 |
通配符
通配符 | 作用 |
---|---|
* | 匹配任意长度字符,可以是0个 |
? | 匹配任意单个字符,必须是1个 |
[ ] | 匹配指定字符范围内的任意单个字符 |
[a-z] | 表示a-z,A-Y,但不包含Z |
[ A-Z ] | 表示A,b,B.....z,Z,不包含a |
[ a-Z ] | 包含所有大小写字母 |
[ :upper: ] | 所有大写字母 |
[ :lower: ] | 所有小写字母 |
[ :alpha: ] | 所有字母 |
[ :digit: ] | 所有数字 |
[ :blank: ] | 水平空白字符 |
[ :punct: ] | 标点符号 |
[ ^ ] | 匹配指定字符范围外的任意单个字符 |
正则表达式
^ | 在每行的开始进行匹配 |
$ | 在每行的末尾进行匹配 |
. | 对任何单个字符进行匹配 |
* | 对前一项进行0次或多次重复匹配 |
[str] | 对str中的任何单个字符进行匹配 |
[^str] | 对任何不在str中的单个字符进行匹配 |
[a-b] | 对a到b之间的任何字符进行匹配 |
\ | 忽略后面一个字符的特殊含义 |
+ | 对前一项进行1次或多次重复匹配 |
? | 对前一项进行0次或1次重复匹配 |
{j} | 对前一项进行j次重复匹配 |
{j,} | 对前一项进行j次或更多次重复匹配 |
{,k} | 对前一项最多进行k次重复匹配 |
(s|t) | 匹配s项或t项中的一项 |
[[:alnum:]] | 匹配任意一个字母或者数字,等价于[A-Za-z0-9] |
[[:alpha:]] | 匹配任意一个字母,等价于[A-Za-z] |
[[:digit:]] | 匹配任意一个数字,等价于0-9 |
[[:lower:]] | 匹配任意一个小写字母,等价于a-z |
[[:upper:]] | 匹配任意一个大写字母,等价于A-Z |
[[:space:]] | 匹配任意一个空白符,包括空格、制表符、换行符以及分页符 |
[[:blank:]] | 匹配空格和制表符 |
[[:graph:]] | 匹配任意一个看得见的可打印字符,不包括空白字符 |
[[:print:]] | 匹配任何一个可以打印的字符,包括空白字符,但是不包括控制字符、字符串结束符‘\0’、EOF文件结束符(-1) |
[[:cntrl:]] | 匹配任何一个控制字符,即ASCII字符集中的前32个字符。例如换行符、 制表符等 |
[[:punct:]] | 匹配任何一个标点符号,例如“[]”、“{}”或者“,”等 |
[[:xdigit:]] | 匹配十六进制数字,即0-9、a-f以及A-F |
几个简单的使用例
^word 表示搜索以word开头的内容
word$ 表示搜索以word结尾的内容
. 代表且只能代表一个任意字符
* 重复0个或多个前面的字符
[] 匹配字符集合内任意一个字符,如[a-z]
[^abc]在中括号里表示非,不包含a或b或c
找出"fdisk -l“命令的结果中,取出硬盘路径
fdisk -l | grep Disk | grep /dev/nv | cut -d: -f 1 | cut -d " " -f2
找出ifconfig命令输出中的所有IP地址
ifconfig | egrep -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9] {1,3}\.[0-9]{1,3}"