天天看点

linux shell编程文本处理命令greplinux shell编程文本处理命令greppattern 模式 --》模板通配符例子

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
           

继续阅读