grep及正则表达式

grep,egrep ,fgrep


grep [options] 'PATTERN' [FILES]

选项 -i ,忽略字母大小写

选项 --color,匹配出的字符串加色显示

选项 -v ,显示未匹配的行

选项 -o ,只显示匹配的字符串,而非行

选项 -E ,使用扩展正则表达式模式

选项 -A #,显示匹配到的字符所在行以及下#行

选项 -B #,显示匹配到的字符所在行以及上#行

选项 -C #,显示匹配到的字符所在行以及上下各#行


egrep = grep -E

fgrep

fast grep ,不支持正则表达式


grep:根据模式,搜索文本,并将符合模式的文本行显示出来。默认使用基本正则表达式定义的模式来过滤文本。

pattern:由文本字符和正则表达式的元字符组合而成匹配条件

正则表达式:regular expression,REGEXP



基本正则表达式 basic REGEXP,默认开启贪婪模式

元字符 meta char:

. 匹配任意单个字符

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

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

字符集合 ,中括号外再加中括号表示任意

[:space:] 所有空白格

[:punct:] 所有标点符号

[:lower:] 所有小写字母

[:upper:] 所有大写字母

[:alpha:] 所有字母

[^[:alpha:] ]所有非字母

[:digit:] 所有数字

[:alnum:] 所有数字字母

[[:alpha:]]* [[:space:]]* [[:alpha:]] 字母开头字母结尾中间有空白字符

匹配次数(贪婪模式:尽可能长的匹配)

* 匹配其前面的字符任意次(0次或多次)

. * 匹配任意字符任意次

\?匹配其前面的字符1次或者0次

\{m,n\} 匹配其前面的字符至少m次,至多n次(\转译字符,逃逸字符,使得中括号内容不被展开,不被bash识别,而是被grep识别),n可以省略,表示无数次。m不可以省略,最小是0。

位置锚定

^ 锚定行首,此字符后面出现的任意内容必须出现在行首

$ 锚定行尾,此字符前面出现的任意内容必须出现在行尾

^$ 空白行

\< 或者\b 锚定词首,其后面的任意字符必须作为单词首部出现

\> 或者\b 锚定词尾,其前面的任意字符必须作为单词尾部出现

分组

\(ab\)将ab视作整体出现

后向引用

\1 第一个左括号以及与之对应的右括号所包括的所有内容

\2 第二个左括号以及与之对应的右括号所包括的所有内容

grep '\(l..e\).*\1' FILE

查找存在,前面有l..e,最后是有这个字符串的行

grep '\([0-9]\).*\1$' FILE

查找存在,前面有个数字,最后是以这个数字结尾的行




扩展正则表达式 extended REGEXP

元字符 meta char

字符匹配

. 匹配任意单个字符

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

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

次数匹配

* 匹配其前字符任意次

?匹配其前字符0或1次

+ 匹配其前字符至少一次

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

位置锚定

^ 锚定行首,此字符后面出现的任意内容必须出现在行首

$ 锚定行尾,此字符前面出现的任意内容必须出现在行尾

^$ 空白行

\< 或者\b 锚定词首,其后面的任意字符必须作为单词首部出现

\> 或者\b 锚定词尾,其前面的任意字符必须作为单词尾部出现

()分组

\1  后向引用

\2  后向信用

|      或者

\.  匹配. (\逃逸符,让元字符表示本身,而非代表意义)


egrep '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' FILE

显示文件中有1-255的所有行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。