本文中主要介绍了linu系统下grep命令的用法和基本正则表达式。


1.grep作用

Linux系统中文本文件是最常见的一种文件,而grep命令是一种强大的文本搜索工具,也是最长用到的命令之一,它能使用正则表达式搜索文本。grep全称是Global Regular Expression Print,它的使用权限是所有用户。在linux中,有grep,egrep,fgrep三种命令格式,其中grep默认支持基本正则表达式,egrep支持扩展正则表达式,fgrep不支持正则表达式元字符,搜索字符串的速度快。

本文只介绍基本的grep命令和基本正则表达式。


2.grep的命令格式grep [options] 'pattern' FILE


3.grep的基本使用

在abc.txt文件中有如下字段:

grep扩展正则表达式 grep中的正则表达式_bc

要想找出其中包含a的字段,可以用如下命令:

grep ‘a’ abc.txt

对应结果如下:

grep扩展正则表达式 grep中的正则表达式_grep扩展正则表达式_02


4.正则表达式

   正则表达式就是一类字符所书写出的模式(pattern),来处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊称号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序。需要注意的是基本正则表达式使用的是贪婪模式。

   常见基本正则表达式如下:

^:锚定行首的符号条件的内容,用法格式“^pattern”

如,搜索abc.txt下,以a开头的字段:

grep '^a' abc.txt

grep扩展正则表达式 grep中的正则表达式_正则表达式_03




$:锚定行尾的符号条件的内容,用法格式“pattern$”

如,搜索abc.txt下,以b结尾的字段:

grep 'b$' abc.txt

grep扩展正则表达式 grep中的正则表达式_字符串_04



^$:空白行



.:匹配任意单个字符



*:匹配紧挨在其前面的字符任意次



如a*b表示取b,ab,aab,aaab...

grep 'a*b' abc.txt

grep扩展正则表达式 grep中的正则表达式_grep扩展正则表达式_05



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



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

如:

grep扩展正则表达式 grep中的正则表达式_操作系统_06



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



\?:匹配紧挨在其前面的字符0次或1次



   如a\?b则有ab或b匹配

grep扩展正则表达式 grep中的正则表达式_操作系统_07




\{m,n\}:匹配其前面的字符至少m次,至多n次



   \{0,n\}:至多n次



   \{m,\}:至少m次,多了不限



   \{m\}:精确匹配m次



如a\{1,3\}b:ab,aab,aaab

grep扩展正则表达式 grep中的正则表达式_bc_08






\<:锚定词首,用法格式:\<pattern, 也可用\b:\bpattern



\>:锚定词尾,用法格式:pattern\>



   \b:pattern\b或 \<pattern>\:匹配单词



\(\):分组,用法格式:\(pattern\)



   如:

   ab任意字符ab:ab.*ab



   a.b任意字符a.b:\(a.b).*\1




5.grep的常见选项

    --color=auto:自动加颜色


        -o:只显示被模式匹配到的字符串,而不是整个行

        -A #:显示匹配到的行时,顺带显示其后面的#个行



        -C #:后面的#行

        -E:使用拓展的正则表达式


关于grep的综合使用,以及扩展正则表达式,将在后续博文中介绍。。



转载于:https://blog.51cto.com/xlows/1365605