在Linux下正则表达式和grep命令的使用

SDLQXINZHAI

SDLQXINZHAI

2016-01-29 17:58

在Linux下正则表达式和grep命令的使用,在Linux下正则表达式和grep命令的使用

正规表示法( Regular Exdivssion,RE )

1 什么是正规表示法:

什么是正规表示式 ( Regular Exdivssion, 底下简称 RE ) 呢?简单的说,在 Linux 的环境下,我们可以透过『字符串以及一些特殊字符的辅助』来进行文字的比对工作,好来让使用者筛选自己所需要数据。

这些特殊的字符与搭配使用的工具,就构成了正规表示法的主轴!

例如 /etc/rc.d/init.d 这个目录当中好了,如果你要找到一个文件内容含有 mail 这个字符串的文件名,要怎么搜寻呢?利用 grep 配合 mail 以及万用字符来搜寻所有的文件名『grep 'mail' /etc/rc.d/init.d/*』

2 正规表示法对于系统管理员的用途:

对于系统管理员来说,正规表示法则是一个『不可不学的好东西!』由于系统如果在繁忙的情况之下,每天产生的讯息信息会多到你无法想象的地步,而我们也都知道,系统的『错误讯息登录文件』 的内容记载了系统产生的所有讯息,当然,这包含你的系统是否被『入侵』的纪录数据。但是系统的数据量太大了,要系统管理员的 你每天去看这么多的讯息数据,想不疯掉都很难,这个时候,我们就可以透过『正规表示法』的功能,将这些登录的信息进行处理,仅取出『错误』的信息来进行分析。

3 正规表示法的广泛用途:

除了系统管理员之外,一大堆的软件与设定都是支持正规表示法的,最常见的例子就是『邮件服务器』!您是否有常常收到电子邮件里最让人诟病 的『广告信件』呢?那如果我在 Server 端就将广告信件给剔除的话,客户端就会减少很多不必要的频宽损耗了对吧!那么如何剔除广告信件呢?由于广告信件几乎都有一定的标题或者是内容,因此,只要 每次有来信时,都先将来信的标题与内容进行特殊字符串的比对,使用正规表示法发现有不良信件就予以剔除!目前两大服务器软件sendmail 与 postfix 都支持正规表示法的比对功能!很多的服务器软件、以及套件都支持正规表示法。

4 grep

语法:[root @test /root ]# grep [-acinv] '搜寻字符串' filenames-list

参数说明:

-a :将 binary 文件以 text 文件的方式搜寻数据

-c :计算找到 '搜寻字符串' 的次数

-i :忽略大小写的不同,所以大小写视为相同

-n :顺便输出行号

-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!

范例:

[root @test /root]# grep 'root' /var/log/secure

搜索 /var/log/secure 这个文件中包含 root 的行

[root @test /root]# grep -v 'root' /var/log/secure

搜索没有 root 的行

[root @test /root]# grep [A-Z]ANPATH /etc/man.config

说明:grep 是一个很常见的指令,最重要的功能就是进行字符串数据的比对了,需要说明的是『grep 在一个文件中查寻一个字符串时,他是以"整行"为单位来数据的撷取的!』

grep 是最简单的正规表示法搜寻指令之一,他并不支持一些更严谨的正规表示法内容,不过,已经相当的好用。

例题一:找出这个文件里面含有 know 这个字符,并将行号列出来:注意,大小写是不一样的

[root @test /root ]# grep -n 'know' regexp.txt

例题二:找出这个文件里面含有 * 这个字符,并将行号列出来:

[root @test /root ]# grep -n '*' regexp.txt

例题三:我要将所有 know 不论大小写都列出来,并列出行号:

[root @test /root]# grep -ni 'know' regexp.txt

注意:类似的指令还有egrep、awk、gawk、sed等,将在后面详细说明

5 正规表示法的特殊字符(charaters)与 egrep 指令

特殊字符 表示意义

^word 待搜寻的字符在行首

word$ 待搜寻的字符在行尾

. 匹配任何一个可能的字符

跳脱符号将特殊字符变成普通字符

? 任何一个『单一』字符

* 匹配模式

展开更多 50%)
分享

猜你喜欢

在Linux下正则表达式和grep命令的使用

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
在Linux下正则表达式和grep命令的使用

在Javascript中使用正则表达式

Web开发
在Javascript中使用正则表达式

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

正则表达式

Web开发
正则表达式

正则表达式口诀 正则表达式学习工具

Web开发
正则表达式口诀 正则表达式学习工具

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

正则表达式的使用话题

Web开发
正则表达式的使用话题

教你使用正则表达式

C语言教程 C语言函数
教你使用正则表达式

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Linux指令篇:文件管理--git

Linux指令篇:文件管理--git

Excel 对齐工具的使用

Excel 对齐工具的使用
下拉加载更多内容 ↓