【发布时间】:2013-06-12 09:22:13
【问题描述】:
我有一个文件test.txt,其中有一些格式化的电话号码。我正在尝试使用grep 来查找包含电话号码的行。
grep -e "[0-9]{3}-[0-9]{3}-[0-9]{4}" test.txt 似乎不起作用并且没有给出任何结果。但是grep -E "[0-9]{3}-[0-9]{3}-[0-9]{4}" test.txtworks。所以我想知道这两个选项有什么区别。
根据man grep:
-E, --extended-regexp 将模式解释为扩展的正则表达式(即强制 grep 表现得像 egrep)。
-e 模式,--regexp=模式 指定在搜索输入期间使用的模式:输入 如果它与任何指定的模式匹配,则选择该行。 此选项在使用多个 -e 选项时最有用 指定多个模式,或者当一个模式以破折号开头时 (`-')。
但我不太明白。什么是扩展正则表达式?
【问题讨论】:
-
查看 unix.stackexchange 以了解这些类型的问题。这实际上是以下内容的副本:unix.stackexchange.com/questions/50512/…
-
@jwd: 或堆栈溢出;或 Apple,或 Ubuntu,或......这里的主题非常适合。
-
好吧,我认为@JonathanLeffler 实际上并不是真的在 Apple 或 Ubuntu 上。它的措辞与此处相关,因为给出了一个具体的示例,将其框架为一个“编程”问题,而不是一个纯粹的技术 UNIX 问题。当然,@user2440712(我希望他们会想到真正的用户名)运行的系统也会在一定程度上影响答案,因为不同版本的
grep比比皆是。