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

Posted XQR

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux三剑客---grep,sed,awk与正则表达式相关的知识,希望对你有一定的参考价值。

grep命令:

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

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

 

常用用法:

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

高级参数:

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

例:[[email protected] 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:
[[email protected] tmp]# grep "^th" regular_express.txt
this dress doesnt fit me.

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

例3:

[[email protected] tmp]# grep "425.0" regular_express.txt
  42500000491
  425000491

例4:

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

例5:

[[email protected] tmp]# grep "4250*49" regular_express.txt
42500000491
425491
425000491

例6:

[[email protected] 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:
[[email protected] 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与正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

linux三剑客grep,sed,awk

Linux文本处理三剑客(grep,sed,awk)

Shell文本处理工具(Linux三剑客 grep sed awk )

Linux 三剑客 -- awk sed grep

linux命令三剑客:awk,grep,sed

linux命令三剑客:awk,grep,sed