码迷,mamicode.com
首页 > 系统相关 > 详细

linux三剑客---grep,sed,awk与正则表达式

时间:2018-04-21 19:28:48      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:特殊符号   foo   regular   expr   多个   dev   SM   word   not   

grep命令:

grep全称:Global Regular Expression Print,即全面搜索正则表达式并把行打印出来,通过参数-E可以使用egrep的功能

grep与egrep的区别:在于grep只支持基础正则表达式,而egrep可以支持扩展的正则表达式

 

常用用法:

[root@www ~]# grep [-acinv] [--color=auto] 搜寻字符串 filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 搜寻字符串 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 搜寻字符串 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

高级参数:

-A:后面加数字,为after的意思,除了列出该行外,后续的n行也列出来
-B:后面加数字,为befer的意思,除了列出该行外,前面的n行也列出来
--color=auto:可将正确的那个选取数据列出颜色

例:[root@learning tmp]# grep -A2 -B2 "this" regular_express.txt
apple is my favorite foody
Football agame is not use feet only
this dress doesnt fit me.
go!go!lets go!!!
42500000491

 

正则表达式:

简单来说,正则表达式就是处理字符串的方法,以行为单位来进行字符串的处理行为;正则表达式通过一些特殊符号的辅助,让用户可以轻易达到查找,删除,替换某特定字符串的处理程序

^word 搜索以word为行首的那一行
word$ 搜索以word为行尾的一行
.

代表且只能代表任意一个字符

\

转义符号
* 表示重复0个或多个前面的字符(linux其他地方表示所有,例*.php,表示所有后缀名为php的文件)
.*

匹配所有字符

^.*

以任意字符开头的内容

[word] 匹配word中任意一个字符存在的行
[^word]

匹配不包含^后任意字符的所有内容

\{n,m\} 匹配前一个字符重复次数n到m次的前一行【\为转义符号,如果用egrep可以去掉斜线】
\{n,\} 匹配前一个字符重复次数至少n次的前一行
\{n\} 匹配前一个字符重复次数为n次的那一行

 

 

 

 

 

 

 

 

 

 

 

 

 

例1:
[root@learning tmp]# grep "^th" regular_express.txt
this dress doesnt fit me.

例2:
[root@learning tmp]# grep "y$" regular_express.txt
"open source" is a good mechanism to devolop programsy
apple is my favorite foody

例3:

[root@learning tmp]# grep "425.0" regular_express.txt
  42500000491
  425000491

例4:

[root@learning tmp]# grep "\." regular_express.txt
this dress doesnt fit me.【如果只是“.”,将会匹配全部】

例5:

[root@learning tmp]# grep "4250*49" regular_express.txt
42500000491
425491
425000491

例6:

[root@learning tmp]# grep [aeo] regular_express.txt
"open source" is a good mechanism to devolop programsy
apple is my favorite foody
Football agame is not use feet only
this dress doesnt fit me.
go!go!lets go!!!

例7:
[root@learning tmp]# grep 0\{3,\} regular_express.txt
42500000491
425000491

 

 

扩展的正则表达式

+

表示重复一个或多个前面的字符

0个或1个字符
|

用或的方式查找多个符合的字符串

() 找出”组”字符串(例如找出glad或glod两个字符串,grep ‘g(la|lo)d‘ regular_express
()+ d多个重复组的判别

 

linux三剑客---grep,sed,awk与正则表达式

标签:特殊符号   foo   regular   expr   多个   dev   SM   word   not   

原文地址:https://www.cnblogs.com/xqr2018/p/8902451.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!