grep选取命令&正则表达式
《鸟哥的Linux私房菜》学习笔记之grep
常用场景:https://www.cnblogs.com/wangchenwei/p/13066475.html
选取命令就是将一段数据经过分析后,取出我们想要的,或是经过分析关键词,取得我们所想要的那一行,一般针对一行数据来分析
1、grep简单语法
grep [-acinv] [--color=auto] '查找字符' filename
-a | 将二进制文件以文本文件的方式查找数据 |
-c | 计算找到'查找字符'的次数 |
-i | 忽略大小写的不同 |
-n | 索性顺便输出行号 |
-v | 反向选择,显示没有'查找字符'的那些行 |
--color=auto | 将找到的关键字部分加上颜色显示 |
2、正则表达式
正则表达式是处理字符串的方法,它以行为单位来进行字符串的处理操作,正则表达式通过一些特殊符号的辅助,可以让用户轻易地完成【查找、删除、替换】某个特定字符串的处理过程
正则表达式基本上是一种【表示法】,只要程序支持这种表示法,那么该程序就可以用来作为正则表达式的字符串处理之用
[:alnum:] | 英文大小写及数字,0-9、a-z、A-Z |
[:alpha:] | 大小写字母,a-z、A-Z |
[:lower:] | 小写字符,a-z |
[:upper:] | 大写字符,A-Z |
[:digit:] | 数字,0-9 |
[:graph:] | 除了空格符(空格与【tab】)以外的所有按键 |
[:cntrl:] | 控制按键,CR(回车)、LF、Tab、Del等 |
[:blank:] | 空格与【tab】 |
[:print:] | 任何可以被打印的字符 |
[:punct:] | 标点符号 |
[:space:] | 空白字符,空格、【tab】、CR等 |
[:xdigit:] | 十六进制的数字类型,0-9、a-f、A-F |
3、grep的一些高级选项
grep [-A] [-B] [--color=auto] '查找字符' filename
-A | after,除了列出该行外,后续的n行号也列出来 |
-B | before,除了列出该行外,前面的n行号也列出来 |
--color=auto | 对关键字显色 |
4、基础正则表达式字符集合
^word |
待查找的关键字在行首 查找行首为#开始的一行,并列出行号 grep -n "^#" filename |
word$ |
待查找的关键字在行尾 查找行尾为!的行,并列出行号 grep -n "!$" filename |
. |
代表一定有一个任意字符 查找字符串可以是【eve】、【eae】、【eee】,但不能仅有【ee】 grep -n "e.e" filename |
\ |
转译符,将特殊符号的特殊意义去除 查找含有单引号'的行 grep -n \' filename |
* |
重复零个或者无穷多个的前一个RE字符 查找【es】、【ess】、【esss】等的关键字,至少一个s grep -n "ess*" filename |
[list] |
字符集合的RE字符,里面列出想要选取的字符,仅代表一个待查的字符 查找含有【gl】或者【gd】的行 grep -n "g[ld]" filename |
[n1-n2] |
字符集合的RE字符,里面列出想要选取的字符 查找含有大写字母的行 grep -n "[A-Z]" filename |
[^list] |
取非 查找【ooa】、【oob】等,但不要【ooc】 grep -n "oo[^c]" filename |
\{n,m\} |
连续n到m个前一个字符 若为\{n\}则代表n个前一个字符 若为\{n,\}则代表最少n个前一个字符 查找g与g之间2到3个o存在的字符串,即【goog】、【gooog】 grep -n "go\{2,3\}g" filename |