开发者社区> 技术小甜> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

文本处理工具:grep egrep fgrep

简介:
+关注继续查看

一、grep:global search regular expression and print out the line.

文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行

格式:grep [option] 'PATTERN' file1,...其中PATTERN为正则表达式。

--color=auto:匹配的行高亮显示

-v:反向匹配,显示不能被模式所匹配的行

-o:仅显示被匹配的内容,而非整行

-i(ignore-case):不区分字符大小写 

 -A n:显示匹配行并显示下面的n行

-B n:显示匹配行并显示下面的n行

-C:显示匹配行的上下文


其正则表达式:

1、字符匹配:

.:任意单个字符

[]:指定范围内的任意单个字符

[0-9]:

[a-z]:

[A-Z]:

[^]:指定范围外的任意单个字符


2、次数匹配:用来指定匹配器前面的字符的次数

*:任意次数

.*:匹配任意长度的任意字符

\?:0次或1次

        \{m\}:匹配m次

\{m,n\}:匹配m到n次

\{m,\}:匹配至少m次

\{m,n\}:匹配最多n次

3、位置锚定:用来指定字符出现的位置

^:锚定行首

$:锚定行尾

^$:空白行

  例子:

统计/etc/rc.d/rc.sysinit中以bash结尾的行

grep --color=auto 'bash$' /etc/rc.d/rc.sysinit

统计/etc/rc.d/rc.sysinit中空行数

grep --color=auto '^$' /etc/rc.d/rc.sysinit |wc -l

\<char:锚定词首 

例子:/etc/passwd以r开头的行

   grep --color=auto '\<[Rr][^[:punct:]]*[Tt]' /etc/passwd

char\>:锚定词尾

例子:\<h..o\>匹配以h开头以o结尾中间包含任意两个字符的单词

4、\(\):分组

例子:^\(ab\)*xy$:匹配以ab开头,以xy结尾,中间位包含任务ab


5、引用:

\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹到的内容

\2:

......

例如:\(a.b\)xy\1,他可以匹配abxyab a6bxya6b ,a6bxya7b不可匹配


例:显示/proc/meminfo文件中以大小写s开头的行

   #grep "^[sS]" /proc/meminfo

   #grep -i "^s" /proc/meminfo

例:取出默认shell为非bash的用户

   #grep -v "bash$" /etc/passwd |cut -d: -f1

例:取出默认shell为bash且其ID号最大的用户

   #grep  "bash$" /etc/passwd|sort -n -t: -k3|tail -1|cut -d: -f1

例:显示/etc/rc.d/rc.sysinit文件中,以#开头,后面个至少各一个空白字符,而后又有至少一个非空白字符的行

   #grep  "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit

例:找出/etc/passwd文件中一位或者两位数

     #grep --color=auto "\<[0-9]\{1,2\}\>" /etc/passwd

例:找出netstat -tan 命令执行的结果中以"LISTEN"结尾的行

   netstat -tan |grep --color "LISTEN[[:space:]]*$"

例:找出netstat -tan 命令执行的结果中以"LISTEN"或者"ESTABLISHED"结尾的行


二、egrep:使用扩展正则表达式类构建模式:相当于grep -E


其正则表达式:

1、字符匹配:

.:任意单个字符

[]:指定范围内的任意单个字符

[0-9]:

[a-z]:

[A-Z]:

[^]:指定范围外的任意单个字符


2、次数匹配:用来指定匹配器前面的字符的次数

*:任意次数

.*:匹配任意长度的任意字符

+:匹配其前面的字符至少一次。

?:0次或1次

        {m}:匹配m次

{m,n}:匹配m到n次

{m,}:匹配至少m次

{m,n}:匹配最多n次

3、位置锚定:用来指定字符出现的位置

^:锚定行首

$:锚定行尾

^$:空白行

  例子:

统计/etc/rc.d/rc.sysinit中以bash结尾的行

grep --color=auto 'bash$' /etc/rc.d/rc.sysinit

统计/etc/rc.d/rc.sysinit中空行数

grep --color=auto '^$' /etc/rc.d/rc.sysinit |wc -l

\<char:锚定词首 

例子:/etc/passwd以r开头的行

   grep --color=auto '\<[Rr][^[:punct:]]*[Tt]' /etc/passwd

char\>:锚定词尾

例子:\<h..o\>匹配以h开头以o结尾中间包含任意两个字符的单词

4、():分组

例子:^\(ab\)*xy$:匹配以ab开头,以xy结尾,中间位包含任务ab

   |:或者


5、引用:

\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹到的内容

\2:

......

例如:\(a.b\)xy\1,他可以匹配abxyab a6bxya6b ,a6bxya7b不可匹配


  

例:找出netstat -tan 命令执行的结果中以"LISTEN"或者"ESTABLISHED"结尾的行

 netstat -tan |egrep --color "(LISTEN|ESTABLISHED)[[:space:]]*$"

例:找出ifconfig命令执行的结果中的1到255质检的整数

#ifconfig |grep -E --color=auto "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|>"

三、fgrep:其中f为fast,不解析正则表达式。













本文转自lzf0530377451CTO博客,原文链接:http://blog.51cto.com/8757576/1547102 ,如需转载请自行联系原作者






版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux的文本处理工具浅谈-awk sed grep
Linux的文本处理工具浅谈 awk   老大 【功能说明】 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列的分隔符 RS横着切,行的分隔符 ...
1162 0
文本处理三剑客之grep&正则表达式
grep是一个文本过滤工具,它支持正则表达式,能把搜索匹配到的行打印出来。grep的全称是Global Regular Expression Print(全局正则表达式)使用权限是所有用户。 一、grep 作用:按照用户指定的模式对目标进行搜索后输出 模式:正则表达式与文本字符 按照指定的...
776 0
三大文本处理工具grep、sed及awk的简单介绍
grep、sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了。只不过,相比较而言,sed和awk功能更强大而已,且已独立成一种语言来介绍。
529 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载