图片 2

命令中的正则表达式,命令中的正则表达式详解

By admin in 3522vip on 2020年5月8日

怎么仅仅只显示相配出的字符,并不是优越出的行?

运用如下语法:

grep -o 正则表达式 文件名

匹配 ‘Vivek’ 或 ‘vivek’ :
grep ‘[vV]ivek’ FILENAME

在 Linux 、类 Unix 系统中笔者该怎么样接受 Grep 命令的正则表明式呢?

你可以只呈现以 vivek 开头的文本行。比如说正是不彰显 vivekgite , vivekg
那样单词领头的。
grep -w ^vivek /etc/passwd

字符类

匹配 Vivek 或 vivek:

grep '[vV]ivek' 文件名

或者

grep '[vV][iI][Vv][Ee][kK]' 文件名

也可以协作数字 (即匹配 vivek1 或 Vivek2 等等卡塔尔国:

grep -w '[vV]ivek[0-9]' 文件名

能够协作三个数字字符(即 foo11、foo12 等卡塔尔:

grep 'foo[0-9][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 奔驰M级 S T U V
    W X Y Z’

在这里个例子所示的是合营全体大写字母:

grep '[:upper:]' 文件名

查找并出口全数多个假名的结果:
grep ‘^..$’ FILENAME

正则表明式

正则表明式正是用以相称每行输入的一种格局,格局是指一串字符体系。下边是楷模:

^w1
w1|w2
[^ ]

图片 1

点字符转义

上面要合作到 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 '[[:digit:]]{1,3}/.[[:digit:]]{1,3}/.[[:digit:]]{1,3}/.[[:digit:]]{1,3}' 文件名

应用上面例子的语法:
grep -o regex FILENAME

正则表达式限制符

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

在括号内的表达式中,在“ [: ”和“ :]
”中所附的字符类的称呼:代表归属此类的富有字符的列表。规范字符类名称:
◾[:alnum:] – 字母数字字符。
◾[:alpha:] – 字母顺序
◾[:blank:] – 空格和制表符。
◾[:digit:] – 数字: ‘0 1 2 3 4 5 6 7 8 9’。
◾[:lower:] – 小写字母:‘a b c d e f ‘。
◾[:space:] –
特殊字符:制表符,换行符,垂直制表符、换页,回车,和空中。
◾[:upper:] – 大写字母:‘A B C D E F G H I J K L M N O P Q 奥迪Q5 S T U V W
X Y Z’。

如何寻觅以“-” 符号开始的特别格局?

要选取 -e 选项来搜寻匹配 ‘–test–’ 字符串,假使不采取 -e 选项,grep
命令会策画把 ‘–test–’ 充任自身的选项参数来解析:

grep -e '--test--' 文件名

您能够宽容数字(比方相称 vivek1 或 Vivek2 ):
grep -w ‘[vV]ivek[0-9]’ FILENAME

图片 2

还是能如此:
grep ‘foo.*bar\|word3.*word4’ FILENAME

怎么着使 grep 命令高亮突显?

选用如下的语法:

grep --color 正则表达式 文件名

一、火速精晓正则表明式

什么样使用种类车检查测?

应用如下的语法,您可以检查评定一个字符在体系中重复现身次数:

{N}
{N,}
{min,max}

要相配字符 “v” 出现五遍:

egrep "v{2}" 文件名

下边包车型大巴通令能匹配到 “col” 和 “cool” :

egrep 'co{1,2}l' 文件名

上边包车型大巴下令将会相配出至少有八个 ‘c’ 字符的有着行。

egrep 'c{3,}' 文件名

上边包车型地铁事例会相配 91-1234567890(即一个数字-11个数字) 这种格式的手提式有线电话机号。

grep "[[:digit:]]/{2/}[ -]/?[[:digit:]]/{10/}" 文件名

中间多少个点都需求被转义:
grep ‘192\.168\.1\.254’ /etc/hosts

怎么利用 grep 的“和”相配?

应用上边包车型客车语法来展现既包蕴 ‘word1′ 又含有 ‘word2′ 的兼具行

grep 'word1' 文件名 | grep 'word2'

你可以用 “.” 来代表单个字符。在底下的例子中,查询了全数以字母 “b”
伊始、字母 “t” 结尾的四个字符的单词。
grep ‘\<b.t\>’ FILENAME

Linux 附带有 GNU grep 命令工具,它协理扩展正则表明式(extended regular
expressions),而且 GNU grep 在颇有的 Linux 系统中都以私下认可有的。Grep
命令被用于寻找一定存款和储蓄在您服务器或工作站上的其它音讯。

3、如何使用通配符?

怎么利用 grep 的“或”相称?

应用如下的语法:

grep -E 'word1|word2' 文件名
或
egrep 'word1|word2' 文件名

或者是

grep 'word1/|word2' 文件名

下边包车型客车事例上校相称起码含有3个字母 c 的结果:
egrep ‘c{3,}’ FILENAME

grep 和 egrep

egrep 等同于 grep -E
。它会以扩张的正则表明式的方式来解释方式。上面来自 grep 的佑助页:

主干的正则表达式元字符 ?、+、 {、 |、 ( 和 )已经失去了它们原本的意思,要利用的话用反斜线的版本 /?、/+、/{、/|、/(
和 /State of Qatar 来代替。 古板的 egrep 并不扶植 { 元字符,一些 egrep 的达成是以
/{ 替代的,所以一个可移植的台本应该防止在 grep -E 使用 {
符号,要相配字面包车型大巴 { 应该运用 [}]。

GNU grep -E 试图帮忙守旧的用法,假如 {
出在在无效的间隔规范字符串那前,它就能够假定 { 不是特殊字符。

比方说,grep -E ‘{1′ 命令寻觅包蕴 {1
四个字符的串,而不会报出正则表达式语法错误。

POSIX.2 标准允许这种操作的扩张,但在可移植脚本文件里应该制止那样使用。

参考:

  • grep 和 regex 匡帮手册页(7卡塔尔
  • grep 的 info 页

6、怎么样使 grep 的出口只体现相称的片段而不是整行?

通配符

您可以使用 “.” 来相配单个字符。例子中相称以 “b” 初阶以 “t”
结尾的3个字符的单词:

grep '/<b.t/>' 文件名

在这儿,

  • /< 相配单词前面包车型客车空字符串
  • /> 相称单词后边的空字符串

打印出唯有五个字符的全数行:

grep '^..$' 文件名

来得以多少个点和二个数字初始的行:

grep '^/.[0-9]' 文件名
正则表达式
操作符
                                                  含义
. 匹配任何单个字符。
? 匹配前一个字符0次或1次。
* 匹配前一个字符≥0次。
+ 匹配前一个字符≥1次。
{N} 匹配前一个字符N次。
{N,} 匹配前一个字符≥m次。
{N,M} 匹配前一个字符 N 到 M次。
如果在列表中的某个列表或某个范围内的结束点,表示该范围。
^ 开始标记,表示在开始位置匹配一个空字符串。也表示不在列表的范围内的字符。
$ 结束标记。匹配一个空的字符串。
\b 单词锁定符。在一个单词的边缘位置匹配空字符串。
\B 在一个单词的非边缘位置匹配空字符串。
\< 匹配单词开始的空字符串。
\> 匹配单词结尾的空字符串。

grep 正则表明式示例

在 /etc/passswd 目录中找寻 ‘vivek’

grep vivek /etc/passwd

输出例子:

vivek:x:1000:1000:Vivek Gite,,,:/home/vivek:/bin/bash
vivekgite:x:1001:1001::/home/vivekgite:/bin/sh
gitevivek:x:1002:1002::/home/gitevivek:/bin/sh

查找大小写肆意的 vivek(即不区分抑扬顿挫写的物色卡塔尔

grep -i -w vivek /etc/passwd

寻觅大小写任性的 vivek 或 raj

grep -E -i -w 'vivek|raj' /etc/passwd

地点最终的例证展现的,正是三个恢宏的正则表明式的方式。

2、如何在grep中动用 OTiguan 的逻辑运算 ?
grep -E ‘word1|word2’ FILENAME
### OR ###
egrep ‘word1|word2’ FILENAME

锚点

你能够分别使用 ^ 和 $
符号来正则相称输入行的早先或最终。上面包车型地铁例证寻找呈现唯有以 vivek
初叶的输入行:

grep ^vivek /etc/passwd

出口例子:

vivek:x:1000:1000:Vivek Gite,,,:/home/vivek:/bin/bash
vivekgite:x:1001:1001::/home/vivekgite:/bin/sh

你能够唯有只寻搜索以单词 vivek 起初的行,即不显得 vivekgit、vivekg
等(LCTT 译注:即该单词后边是空格、符号等Република Србија语的单词分隔符。)

grep -w ^vivek /etc/passwd

寻找以单词 word 结尾的行:

grep 'foo$' 文件名

协作仅仅只含有 foo 的行:

grep '^foo$' 文件名

日常来讲所示的例子能够查找空行:

grep '^$' 文件名

采纳下边例子的语法:
grep –color regex FILENAME

一定检索内容的岗位:
 你能够行使 ^ 和 $
符号免强叁个正则表明式分别相称一行的起头或终止的任务。上面包车型大巴演示展现以
‘vivek’ 初始的文件。
grep ^vivek /etc/passwd

什么在 Linux 系统和类 Unix 的操作系统中接受带正则表明式的 grep 命令呢?

查找以 ‘foo’ 结尾的文本格式:
grep ‘foo$’ FILENAME

5、怎么样使 grep 的出口结果高亮标明?

在底下那么些事例中,相配全数大写字母:
grep ‘[:upper:]’ FILENAME

展现全部满含 “w” 或 “n” 字母的文本行:
grep [wn] FILENAME

还能那样做
grep ‘word1\|word2’ FILENAME

运用 -e 选项寻找全部相称 ‘–test–‘ 的结果。grep 会尝试把 ‘–test–‘
作为二个增选深入分析:
grep -e ‘–test–‘ FILENAME

正则表明式只不过是各类输入行相配的方式。方式是贰个字符体系。下边都以模范:

在最后贰个事例中,使用了增加正则表明式的形式。

3、怎么样在grep中应用 AND 的逻辑运算 ?

三、正则表明式操作符总括

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2020 3522vip 版权所有