文本处理工具: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 ,如需转载请自行联系原作者






相关文章
|
5月前
|
监控 Unix Linux
强大的文本处理工具组合:egrep、正则表达式、awk、cut、xargs
了解Linux和Unix文本处理的关键工具:egrep(扩展正则表达式搜索)、正则表达式、awk(文本分析)、cut(剪切文本)和xargs(传递参数给命令)。这些工具组合使用可高效处理、分析大量数据,尤其在日志分析和文本查询中。例如,从Web服务器日志中查找404错误,先用egrep筛选,再用awk或cut提取IP和URL,最后用xargs配合其他命令执行操作。掌握这些工具能提升工作效率。
|
6月前
|
机器学习/深度学习 Shell 开发工具
正则表达式 与文本三剑客(sed grep awk)
正则表达式 与文本三剑客(sed grep awk)
|
Perl
文本处理三剑客(grep、sed、awk)
文本处理三剑客(grep、sed、awk)
72 1
|
Linux 网络安全 Perl
Linux的文本处理工具浅谈-awk sed grep
Linux的文本处理工具浅谈 awk   老大 【功能说明】 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列的分隔符 RS横着切,行的分隔符 ...
1429 0
|
Linux Shell 关系型数据库