linux命令学习--grep,egrep

yuQbug / 2023-04-29 / 原文

grep -i

--ignore-case 忽略大小写

grep -e

适用于简单的正则表达式,比如搜索一个字符串中是否包含特定的关键词。例如:

grep -e 'hello' file.txt

# 将会在文件file.txt中搜索出所有包含“hello”这个关键词的行。

grep -E

适用于复杂的正则表达式,可以使用多项选择、重复和子表达式来匹配文本。例如:

grep -E '(foo|bar)baz' file.txt

#会在文件file.txt中搜索出所有包含“foobaz”或者 “barbaz” 的行。

egrep

egrep是grep的扩展,执行效果与"grep-E"相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。egrep是用extended regular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regular expression比basic regular expression的表达更规范,且egep支持更多的元字符,即egrep使用的是拓展的正则表达式。

用于egrep和 grep -E的元字符扩展集

+

匹配一个或多个先前的字符。如:’[a-z]+able’,匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。

?

匹配零个或多个先前的字符。如:'gr?p’匹配gr后跟一个或没有字符,然后是p的行。

a|b|c

匹配a或b或c。如:grep|sed匹配grep或sed

()

分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。

grep和egrep都要通过正则表达式来筛选我们想要的东西,只能筛选文本内容,不能对目录筛选,如果想筛选目录可以通过管道把目录传过去,或者把目录存到文件里头再筛选。