linux shell编程文本处理命令grep
linux中最为常用的三大文本(awk,sed,grep)处理工具之一,grep可以理解为过滤,通用的正则表达式分析程序,grep家族总共有三个:grep、egrep、fgrep。
pattern 模式 --》模板
使用基本正则表达式
模式–》正则表达式–》用来表达某个意思–》利用正确的规则组合成一个公式,用来表达某个意思。
正则表达式–》是一些字符串,数字,特殊符号组合而成。
用途:在文件中查找并显示包含指定字符串的行
格式:grep [选项]... 模式 目标文件
-i:查找时忽略大小写 ignore case
-v:反转查找,输出与模式不相符的行 -v, --invert-match
-n:显示符合模式要求的行号 number
-r:递归搜索所有文件
-o:只显示匹配的内容 -o, --only-matching
-E: 支持更多的元字符(支持扩展正则) -E, --extended-regexp regular expression 正则表达式
元字符:有特殊作用的字符 ^ $
基本元字符 ^ $ *
扩展元字符 | + ? { }
egrep = grep -E
| 或者
-A: 找到匹配行以及后几行
-B:输出匹配行以及前几行
-C:输出前面和后面多少行
^ 代表以什么开头
$ 代表以什么结尾
^$ 代表空行
^liuyong$ 一行里只有liuyong字符串
[1-9] 代表从1到9的任意一个数字
[a-Z] 从a-Z中取一个
[a-z] 从a-z中取一个
[A-Z] 从A-Z中取一个
[0-Z] 从0-9 和a-Z中取一个
[^0-Z] 不取0-Z的字符 -->取反
举例
cat /etc/passwd |egrep "^ly[1-9]"
cat /etc/passwd |egrep "^root" 以root开头的行
cat /etc/passwd |egrep "bash$" 以bash结尾的行
cat /etc/ssh/sshd_config |egrep -v "^$|^#"
通配符
* 代表匹配前一个项任意次
? 代表匹配前一个项0次或者1次
+ 代表匹配前一个项 一次到多次
. 占位符 除\n之外的任意字符
{n,m} 匹配前一项n到m次
.* 代表任意字符
例子
写一个c类ip地址的正则
c类ip地址范围
192~223
0~255