- 浏览: 426054 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Glogo:
楼主您好,我在试验您的代码的时候发现新开的三个子线程并没有一直 ...
java 高并发 ReentrantLock -- 可重入的锁 -
univasity:
最近发觉也被限速了,投诉一下就好一会~~ 看来明天又要和电信M ...
ADSL上网速度慢 都是帐号限速惹的祸 -
liuyuanhui0301:
java 高并发 ReentrantLock -- 可重入的锁 -
dang_java:
呵.很好的说明文档.
JXTA技术与应用发展 -
helloqidi:
谢谢,学习了
SQL中exists和in的区别
grep 的名称实际上就来自于正则表达式:g/RE/p
。grep
用于在一个或多个文件中搜索特定字符串的实例。缺省情况下,grep
输出其中出现了您的搜索字符串的每一行(而不是仅输出搜索字符串)。如果您在多个文件中执行搜索,则 grep
还会输出在其中找到该行的文件名。
使用以下文本创建一个名为 grep.txt 的文件:
I like golf. Golf is played on grass. I created gilf. |
grep
的基本语法如下:
grep REGULAREXPRESSION FILENAME(S) |
现在,返回到前面的第一个正则表达式示例:单独的单词 golf
。若要与 grep
一起使用这个表达式,可输入:
grep golf grep.txt |
此命令在 grep.txt 文件中搜索字符串 golf
的所有实例,并输出包含该字符串的行。您的输出应该类似如下:
I like golf. |
下一步,试验一些上面讨论过的特殊字符。您可以使用方括号(方括号表达式)来指示您想要搜索 golf
和 Golf
:
grep [gG]olf grep.txt |
输出应该类似如下:
I like golf. Golf is played on grass. |
若要搜索 golf
和 gilf
,您同样可以使用方括号。取而代之的是,可以尝试使用一个句点来指示您想要搜索 g
和 lf
之间的任何字符:
$grep g.lf grep.txt |
输出应该类似如下:
I like golf. I created gilf. |
您现在已经找到了获得每种 golf
变体的方法,但是还没有哪个搜索返回了所有三个实例:golf
、Golf
和 gilf
。花点时间考虑一下如何搜索所有三个实例。这可以通过多种方法来实现。下面是两个示例:
grep ..lf grep.txt grep [gG][oi]lf grep.txt |
这两种方法都返回所有三行:
I like golf. Golf is played on grass. I created gilf. |
您是否能够想出更多的方法来完成此任务呢?到目前为止,您仅学习了两个在正则表达式中使用的特殊字符。这只是开始!有些特殊字符在其他特殊字符之内使用。例如,当您将一组字符包括在方括号中时,您可以使用短横线 (-) 来搜索一系列字符。将以下行添加到您的文本文件:
What is g2lf? |
使用您到目前为止已学到的知识,您知道如果使用类似于 g.lf
或 g[oi2]lf
的正则表达式,则这一行将包括在搜索结果中。使用句点将返回在该位置具有任何字符的结果;使用 [oi2]
将返回仅在该位置具有 o
i
或 2
的结果。通过使用一个短横线,您可以实现第三种方法,其中不只包括少数字符,但并不是包括每个字符:
grep g[a-z]lf |
此方法产生以下输出:
I like golf. I created gilf. |
从输出中可以看到,此方法搜索落在 a
和 z
之间的任何字符(按字母顺序)。这排除了在 g
和 lf
之间具有数字或符号的字符串,这些字符串不是真正的单词,可能不属于您所需的搜索条件。
通过在方括号中包括附加集合,您还可以搜索多个字符序列。例如,若要搜索 a-z
和 A-Z
,可以使用以下搜索:
grep g[a-zA-Z]lf |
当您的字符序列列表变得更长时,可能发现通过避免某些字符而不是指定想要查找的字符来进行搜索会更容易。这可以通过在搜索序列前在方括号中使用脱字符 (^) 来实现。这说起来挺复杂的,但是通过观察一个示例,应该是很容易理解的。通过使用以下 grep
命令来更改您的搜索,以避免数字但是包括所有其他字符:
grep g[^0-9]lf |
此搜索类似于前面查找所有字母字符的搜索,但是此搜索还返回诸如数字符号 (#
) 和美元符号 ($
) 等不属于字母并且也不在您排除的数字序列中的字符。
要试验的下一个特殊字符是星号 (*),它是若干个重复操作符之一。大多数人都非常熟悉在命令行上使用星号作为文件名搜索条件(通配符),但是在正则表达式中使用星号还是相当新鲜的。星号指示搜索项(前一个字符或方括号表达式)可以出现零次、一次或多次。若要对此进行尝试,请将以下行添加到您已经在使用的 grep.txt 文件:
This time the o is missing in glf. Some people might say goolf. But they would not say goilf. |
现在整个文件应该类似如下:
I like golf. Golf is played on grass. I created gilf. What is g2lf? This time the o is missing in glf. Some people might say goolf. But they would not say goilf. |
尝试在 golf
中的 o
后面使用星号:
grep go*lf grep.txt |
您的搜索将返回具有单词 golf
、glf
和 goolf
的行:
I like golf. This time the o is missing in glf. Some people might say goolf. |
另一个重复操作符是问号 (?)。问号的功能与星号类似,只不过搜索项可以出现零次或一次。多个实例将不匹配。使用问号取代星号来尝试您刚才执行的搜索:
grep go?lf grep.txt |
可以看到,这次作为匹配结果返回了 golf
和 glf
,但是没有返回 goolf
,因为其中存在问号前的搜索项 o
的多个实例:
I like golf. This time the o is missing in glf. |
最后一个常规重复操作符是加号 (+)。加号将查找某个搜索项出现一次或多次的情况。与星号不同,必须至少找到一个实例才会匹配。请尝试以下示例:
grep go+lf grep.txt |
这次,该搜索返回 golf
和 goolf
,但它不返回 glf
,因为没有找到 o
:
I like golf. Some people might say goolf. |
在转向 sed
之前,最后要学习的特殊字符是行首定位点(使用脱字符来实现)和行尾定位点(使用美元符号来实现)。您可能记得,您在本教程的前面使用过脱字符来对方括号表达式取反。当在方括号之外使用脱字符时,它执行完全不同的功能。将脱字符放在正则表达式开头将告诉该搜索仅操作行的开头。换句话说,正则表达式中的第一个字符(脱字符之后)必须与新行上的第一个字符匹配才能匹配该行。类似地,将美元符号放在正则表达式的结尾以指示您仅希望返回与行尾匹配的结果。换句话说,正则表达式中的最后一个字符(美元符号之前)必须与某行上的最后一个字符匹配才能匹配该行。若要对此进行测试,请将以下两行添加到 grep.txt:
golf has been a fine example let's talk about something besides golf |
请注意,对于此测试,您不应该对 golf
进行大写或加标点,因为它将演示一个针对同一单词的搜索,此搜索使用定位点在行尾或行首以不同的方式操作。若要测试行首定位点,请输入以下命令:
grep ^golf grep.txt |
输出应该类似如下:
golf has been a fine example |
若要测试行尾定位点,请使用同一个搜索,但是删除脱字符并在 golf
之后添加一个美元符号。
grep golf$ grep.txt |
使用行尾定位点的输出类似如下:
let's talk about something besides golf |
现在您已经通过在命令行上使用 grep
来学习了正则表达式的基础知识。下一步,您将学习使用 sed
,此实用程序不仅搜索文本,而且还对搜索结果进行替换。首先,下面是对您到目前为止已学习过的内容的小结:
. 句点表示任何单个字符 [] 方括号包括一个字符序列 - 短横线在字符之间使用以创建一个序列(在 [] 内) ^ 脱字符用于对序列(在 [] 内)取反 * 星号搜索某个搜索项的零个、一个或多个实例 ? 问号搜索某个搜索项的零个或一个实例 + 加号搜索某个搜索项的一个或多个实例 $ 美元符号搜索行尾 ^ 脱字符搜索行首 \ 特殊字符前的反斜杠使该字符成为普通字符(请参见下一部分。) |
发表评论
-
Linux的tmpfs文件系统
2012-05-02 17:46 7179前几天发现服务器的内存(ram)和swap使用率非常低,于是就 ... -
iostat来对linux硬盘IO性能进行检测
2012-03-22 18:11 1004近期公司安装了几台DELL ... -
Softlinks vs. Hardlinks: A Quick Explanation
2012-01-18 15:04 1268I got this question in an ema ... -
查看linux 线程
2011-11-22 11:35 880查看linux 线程 博客分类: linux ... -
Linux学习总结—缺页中断和交换技术
2011-05-18 11:00 2543三、Linux缺页中断处理1.请求调页中断:进程线性地址空间里 ... -
Linux学习总结—Linux调度器分析
2011-05-18 10:58 1684四、Linux调度器分析1.Linux2.6调度器的特性2.6 ... -
Linux内存分段和分页管理
2011-05-18 10:56 21071.x86 内存架构和Linux的分段管理x86 内存架构在 ... -
Linux启动分析
2011-05-18 10:54 1055一、系统引导过程总体 ... -
Linux自动启动服务
2010-09-23 13:08 950linux自动启动服务很简单,最简单的是把启动命令放到/etc ... -
linux设置ip.dns.gateway
2009-06-11 15:05 1945静态方法注意:所有操作均使用root用户 #ifcon ... -
自己如何制作RPM包
2009-05-21 14:39 1711我最早使用redhat就是冲 ... -
RPM包rpmbuild SPEC文件深度说明
2009-05-21 14:28 1801上一篇日志写到,为什么要制作rpm包,以及如何使用.src.r ... -
调整swap分区大小
2009-02-10 16:51 1873方法一:如果磁盘有剩余的空间,用分区工具新建一个swap分区. ... -
非常实用的Ubuntu命令大全
2008-12-03 15:05 1298非常实用的Ubuntu命令大全 ... -
Linux操作系统上Lsof命令详解
2008-12-03 14:33 1325一般root用户才能执行lsof命令,普通用户可以看见/u ... -
DOS/Windows和Linux/Unix间的文件格式转换
2008-12-03 11:15 1947DOS/Windows和Linux/Unix间 ... -
syntax error: unexpected end of file
2008-12-03 11:02 3654dos文件转换成unix文件格式 dos格式文件传输到u ... -
BASH中getopts的用法
2008-12-02 15:22 1515getopts optstring varname [arg ... -
Linux基本命令
2008-07-10 18:31 1281进入Linux系统:必须要输入用户的账号,在系统安装过程中可以 ... -
Linux文件系统
2008-07-10 18:27 9411、Linux文件系统是从/开始的 在Linux操作系统 ...
相关推荐
### Indesign_GREP正则表达式详解 #### 1. GREP正则表达式概述 在Adobe InDesign软件中,GREP(Global Regular Expression Print)正则表达式的使用能够极大地提高文档编辑效率,特别是在处理大量文本时。通过精确...
4. **perl**:Perl是一种强大的脚本语言,正则表达式是其核心特性之一。Perl的正则表达式功能非常强大,支持大量的高级构造,如正向预查、反向预查、条件表达式等。Perl在处理文本时,不仅可以进行简单的查找替换,...
正则表达式,又称规则表达式。(英语:Regular ...正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成"regex",单数有regexp、regex,复数有regexps、regexes、regexen。
例如,Perl和JavaScript的正则表达式支持不同的语法特性,而grep和sed命令在Linux/Unix环境中提供了命令行的正则处理功能。理解这些工具之间的异同,可以帮助你在不同环境下灵活运用正则表达式。 "aspsun....
`grep`命令是正则表达式在Linux中最常见的应用之一。其基本语法为`grep [-acinv] 'search_string' filenames-list`: - `-a`:将二进制文件当作文本文件进行搜索。 - `-c`:仅统计匹配行的数量,而不显示实际的匹配...
正则表达式,又称规则表达式。(英语:Regular ...正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成"regex",单数有regexp、regex,复数有regexps、regexes、regexen。
《正则表达式之道》一书由Steve Mansour撰写,Neo Lee翻译,内容涵盖了正则表达式的各个方面,适合初学者及有一定经验的开发者阅读。 #### 二、正则表达式示例 书中提供了不同难度级别的正则表达式示例,帮助读者...
在Linux Shell中,正则表达式常用于grep命令,例如`grep 'pattern' file`用于查找file中包含pattern的行。还可以配合其他命令,如`egrep`(支持扩展正则表达式)、`awk`和`sed`进行更复杂的文本处理。 1. grep命令...
此外,在日常工作中使用的工具如 grep、sed 和 awk 等也支持正则表达式的操作。 #### 三、基本概念介绍 1. **元字符**:正则表达式中的特殊字符,用于构建复杂的匹配规则。 - **`.`**:匹配任何单个字符(除了换...
9. **实例应用**:正则表达式广泛应用于文本编辑器(如vim、emacs)、编程语言(如JavaScript、Python、Java)和搜索引擎(如grep、findstr)。例如,用于验证邮箱格式、手机号码、提取URL等。 通过《精通正则...
正则表达式(Regular Expression),简称RE,是一种用于文本模式匹配的强大工具,尤其在Unix环境下,它被广泛应用于grep、sed、awk等实用工具中,极大地提升了文本处理的效率和灵活性。本文将深入探讨Unix下的正则...
在Linux和Unix环境中,正则表达式常用于命令行工具,如grep、sed和awk等。在这些环境中,正则表达式广泛用于文本处理和自动化任务的脚本编写。 综上所述,正则表达式是文本处理中不可或缺的工具。通过理解正则...
- 在许多文本编辑器和命令行工具(如grep)中也支持正则表达式。 4. **高级特性**: - **非贪婪匹配**:默认情况下,量词是贪婪的,尽可能多的匹配字符。使用 `?` 可使量词变得非贪婪,如 `.*?`。 - **预查**:`...