本文中主要介绍了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文件中有如下字段:

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

grep ‘a’ abc.txt

对应结果如下:

4.正则表达式

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

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

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

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

grep '^a' abc.txt

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

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

grep 'b$' abc.txt

^$:空白行
.:匹配任意单个字符
*:匹配紧挨在其前面的字符任意次

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

grep 'a*b' abc.txt

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

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

如:

[^]:匹配指定范围外的任意单个字符
\?:匹配紧挨在其前面的字符0次或1次

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

\{m,n\}:匹配其前面的字符至少m次,至多n次
   \{0,n\}:至多n次
   \{m,\}:至少m次,多了不限
   \{m\}:精确匹配m次

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

\<:锚定词首,用法格式:\<pattern,
也可用\b:\bpattern
\>:锚定词尾,用法格式:pattern\>
   \b:pattern\b或
\<pattern>\:匹配单词
\(\):分组,用法格式:\(pattern\)

   如:

   ab任意字符ab:ab.*ab

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

5.grep的常见选项

    --color=auto:自动加颜色

        -v:反向选取,只显示不符合模式的行

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

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

        -i:匹配是不区分字符大小写

        -B #:前面的#行

        -C #:后面的#行

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

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