grep结合正则表达式应用

前端之家收集整理的这篇文章主要介绍了grep结合正则表达式应用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

grep的应用之正则表达式

学习@H_502_8@linux有一段时间@H_502_8@,对于系统中最重要的命令之一@H_502_8@,grep小有感悟@H_502_8@.

在@H_502_8@linux@H_502_8@,根据条件来查找文件中的内容@H_502_8@,是一个很频繁的操作@H_502_8@,那么需要根据条件查找@H_502_8@,用到正则表达式就在所难免了@H_502_8@.

下面就来总结一下@H_502_8@grep结合正则表达式的用法

grep[OPTIONS][-ePATTERN|-fFILE][FILE...]

功能说明】

用于查找内容包含指定的范本样式的文件,如果发现某文件内容符合所指定的范本样式,预设grep

令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会

从标准输入设备读取数据。

【参数】

u相关参数

-a--text不要忽略二进制的数据。

-Anum除了显示匹配到的内容之外还显示该列之后的内容

-b--byte-offset显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。

-Bnum除了显示符合范本样式的那一列之外,并显示该列之前的内容

-Cnum除了显示符合范本样式的那一列之外,并显示该列之前后的内容

-d<进行动作>--directories=<进行动作>当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

-E表示使用扩展正则表达式

-v:匹配到内容反向选取

-o:显示匹配的字串,而非字串所在的行

-i:ignore-case,忽略字符大小写

了解了@H_502_8@grep的参数之后@H_502_8@,我们可以小试牛刀@H_502_8@,尝试使用@H_502_8@grep来查找我们想要的内容

下面来个例子

比如@H_502_8@,我们要查找@H_502_8@/etc/passwd文件中其默认@H_502_8@shell@H_502_8@/bin/bash用户

如果不用@H_502_8@grep我们只能查看到文件中的所有用户@H_502_8@,而没办法过滤

wKioL1O_LLPiF41vAAJOFB3wZLY985.jpg

@H_699_301@

各种shell类型的用户都有@H_502_8@,显然这不符合我们的需求

那么我们使用grep来尝试一下

[root@localhosttmp]#grep'/bin/bash$'/etc/passwd

wKiom1O_LOTjgZKrAALY5IW1M_Y178.jpg


如图所示,我们得到了想要的结果

当然@H_502_8@,这只是小试牛刀@H_502_8@,grep要结合正则表达式使用@H_502_8@,才更能发挥出它的巨大威力

这就涉及到了@H_502_8@grep之高级应用的结合拓展正则表达式的使用

扩展正则表达式:

那么正则匹配中@H_502_8@,都有它相应的字符模式

grep能使用的匹配模式也包含如下

字符匹配:

.

[]

[^]

次数匹配:

*:任意次

?:0次或@H_502_8@1

+:至少@H_502_8@1次;

{m}:精确匹配@H_502_8@m

{m,n}:至少@H_502_8@m次,至多@H_502_8@n

{m,}

{0,n}

锚定:

^

$

\<,\b

\>,\b

^$,^[[:space:]]*$

分组:

()引用:@H_502_8@\1,\2,\3

把这些总结起来@H_502_8@,就是对应的

1,匹配什么内容@H_502_8@[范围是什么@H_502_8@]

2,从哪里开始匹配@H_502_8@[从哪找@H_502_8@]

3,匹配次数@H_502_8@[找几个@H_502_8@]

4,找到后是否需要再次配对

这@H_502_8@4个问题理解清楚@H_502_8@,grep结合正则使用对于我们来说@H_502_8@,应该就不是什么难事了

比如说我们要找出@H_502_8@/etc/rc.d/init.d/functions文件中某单词后跟一组小括号“@H_502_8@()”行@H_502_8@,也就是找这个文件中定义的方法

那么方法肯定是以数字或者字母组成的@H_502_8@,并且至少得有一个数字或者字母组成@H_502_8@,那么我们的正则表达式就是给定的范围是数字和字符@H_502_8@,并且后面跟着@H_502_8@(),当然得用引用来表示

#grep-o-E"\<[[:alnum:]]+\>\(\)"/etc/rc.d/init.d/functions

wKioL1O_LLbyrdNjAAFlZiyoSzo323.jpg


这样我们就能很轻松的,能得到我们想要的结果了

原文链接:https://www.f2er.com/regex/361543.html

猜你在找的正则表达式相关文章