目录
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}"




















