grep正则表达式

如何在Linux和类Unix系统中使用Grep命令的正则表达式?Linux自带GNU grep命令工具,支持扩展正则表达式,GNU grep在所有Linux系统中默认可用。Grep命令用于搜索和定位存储在服务器或工作站上的任何信息。

正则表达式

正则表达式是用于匹配每行输入的模式,模式指的是一系列字符。下面是一个例子:

^w1grep正则表达式示例

在/etc/passswd目录中搜索“vivek”。

grep vivek /etc/passwd输出示例:

Vivek: x: 1000: 1000: Vivek gite,,:/home/vivek:/bin/bash任意大小写搜索vivek(即不区分大小写的搜索)。

Grep -i -w vivek /etc/passwd在任何情况下搜索vivek或raj。

grep-e-I-w \’ vivek | Raj \’/etc/passwd上面最后一个例子展示了一个扩展的正则表达式模式。

定位点

您可以分别使用“和$”符号来有规律地匹配输入行的开头或结尾。以下示例搜索显示了仅以vivek开头的输入行:

grep ^vivek /etc/passwd输出示例:

Vivek:X:1000:1000:viveggite,,:/home/vivek:/bin/bash可以只搜索出以单词vivek开头的行,也就是不会显示英文单词分隔符如vivek git和vivekg。)

找到以单词:

grep \’foo

文件名

仅包含foo的匹配行:

格雷普·\’^foo

文件名

下面显示的示例可以搜索空行:

格雷普·\’^

文件名

性格类型

匹配vivek或Vivek:

Grep \'[vV]ivek \’文件名或

grep \'[vV][iI][Vv][Ee][kK]\’的文件名也可以匹配数字(即匹配vivek1或Vivek2等。):

grep -w \'[vV]ivek[]\’的文件名可以匹配两个数字字符(foo11、foo12等。):

grep \’foo[0-9][]\’的文件名不限于数字,还可以匹配至少一个字母:

grep \'[A-Za-z]\’的文件名显示所有带有“w”或“n”字符的行:

grep [wn]文件名用括号括起来的表达式,也就是用“:”和“:]”括起来的字符类的名称,表示属于这个类的所有字符的列表。标准字符类名如下:

[:alnum:]-字母数字字符

[:alpha:]-字母字符

[:blank:]- 空字符:空大小写键和制表符。

[:digit:]-数字:“0 1 2 3 4 5 6 7 8 9”

[:lower:]-小写字母:\’ a b c d e f g h i j k l m n o p q r s t u v w x y z \’

[:space:]- 空大小写字符:制表符、换行符、垂直制表符、换页符、回车符和空大小写键。

[:upper:]-大写字母:\’ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \’

此示例中显示的是匹配所有大写字母:

Grep \'[:upper:]\’文件名通配符

可以用“.”匹配单个字符。在示例中,匹配以“b”开头并以“t”结尾的三个字符的单词:

grep \’/& lt;\’ b.t/> \’文件名在这里,

匹配单词前的空字符串。

匹配单词后的空字符串。

打印出只有两个字符的所有行:

格雷普·\’^..

文件名

显示以点和数字开头的线条:

Grep\’/。[]\’文件名点字符转义

将下面的正则公式与IP地址192.168.1.254匹配是不正确的:(LCTT翻译:可以匹配这个IP地址,但也有可能匹配一个类似的格式,用点以外的间隔符号)

Grep \’192.168.1.254\’ /etc/hosts都需要转义:

grep \’ 192/. 168/. 1/. 254 \’/etc/hosts下面的例子只能匹配IP地址:(LCTT翻译:其实这个正则表达式由于IP地址中数字的范围并不准确)

Egrep\’ [[:digital:]] {1,3}/。[[:digital:]] {1,3}/。[[:digital:]] {1,3}/。[[:digital:]] {1,3} \’如何搜索文件名?

要使用-e选项搜索匹配的\’-test-\’字符串,如果未使用-e选项,grep命令将尝试将\’-test-\’解析为自己的选项参数:

Grep -e \’ – test -\’如何将文件名与Grep的OR匹配?

使用以下语法:

Grep -E \’word1|word2 \’文件名或

grep \’word1/|word2 \’的文件名如何与grep的“and”匹配?

使用以下语法显示包含“word1”和“word2”的所有行。

Grep \’word1 \’文件名| grep \’word2 \’如何使用序列检测?

使用以下语法,您可以检测一个字符在序列中的重复次数:

{N}匹配字符“v”两次:

Egrep \”v{2} \”以下命令可以匹配\” col \”和\” cool \”:

egrep \’co{1,2}l \’文件名下的命令将匹配所有至少包含三个\’ c \’字符的行。

egrep \’c{3,} \’的文件名下面的例子会匹配91-1234567890(即两位数-十位数)格式的手机号码。

grep \”[:digit:]]/{ 2/}[-]/?[[:digit:]]/{10/} \”文件名如何让grep命令高亮显示?

使用以下语法:

grep – color正则表达式的文件名只显示匹配的字符,不显示匹配的行怎么样?

使用以下语法:

Grep -o正则表达式文件名正则表达式限定符

限定符描述.匹配任意的一个字符。?匹配前面的子表达式,最多一次。*匹配前面的子表达式零次或多次。+匹配前面的子表达式一次或多次。{N}匹配前面的子表达式 N 次。{N,}匹配前面的子表达式 N 次到多次。{N,M}匹配前面的子表达式 N 到 M 次,至少 N 次至多 M 次。-只要不是在序列开始、结尾或者序列的结束点上,表示序列范围。^匹配一行开始的空字符串;也表示字符不在要匹配的列表中。$匹配一行末尾的空字符串。\\b匹配一个单词前后的空字符串。\\B匹配一个单词中间的空字符串。\\<匹配单词前面的空字符串。\\>匹配单词后面的空字符串。

Grep和egrep

Egrep相当于

Grep -E它将以扩展正则表达式的形式解释模式。以下内容来自grep的帮助页面:

基本正则表达式元字符?、+、{、|、(和)都失去了原来的意义。如果您想使用它们,请使用反斜杠version/?,/+,/{,/|,/(和/)。传统的egrep不支持元字符,egrep的一些实现被/{,所以一个可移植的脚本应该避免使用grep -E中的{符号,而应该使用[}]来匹配文字{。

GNU grep -E尽量支持传统用法,如果{出现在无效的区间规范字符串之前,会假设{不是特殊字符。

例如,grep-E“{ 1 }”命令搜索包含两个字符{ 1 }的字符串,而不报告正则表达式语法错误。

POSIX.2标准允许扩展这个操作,但是应该避免在可移植脚本文件中使用。

地址:http://www.linuxprobe.com/regular-expressions-in-grep.html.

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论