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






相关文章
|
7月前
|
运维 Shell Linux
linux文本处理工具——grep、sed、awk用法
linux文本处理工具——grep、sed、awk用法
94 1
|
9月前
|
Perl
文本处理三剑客(grep、sed、awk)
文本处理三剑客(grep、sed、awk)
49 1
|
机器学习/深度学习 Linux Perl
Linux三剑客grep、sed、awk以及正则表达式
$ 以...结尾 ^ 以...开头 . 匹配任意一个字符 \- 匹配前一个字符或子表达式任意次(例如:grep "g.*d" a.txt(过滤a.txt文件中的以g开头以d结尾*可以代表有任意多个字符或没有字符))
118 0
Linux三剑客grep、sed、awk以及正则表达式
|
Linux 网络安全 Perl
Linux的文本处理工具浅谈-awk sed grep
Linux的文本处理工具浅谈 awk   老大 【功能说明】 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列的分隔符 RS横着切,行的分隔符 ...
1402 0
|
Linux Shell 关系型数据库