grep
和egrep
是Linux/Unix系统中常用的文本搜索工具,可以通过指定的模式(正则表达式)对文本内容进行搜索,并把匹配的行打印出来。
grep
: 全称是Global Regular Expression Print,是一个强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。egrep
: 等同于grep -E
,使用扩展的正则表达式进行搜索。
基本用法
grep 'pattern' filename
pattern
是你想要搜索的字符串或正则表达式filename
是你想要搜索的文件名
选项
-i
: 忽略大小写-v
: 显示不包含匹配文本的所有行-n
: 显示匹配行及其行号-r
: 递归搜索-l
: 只列出包含匹配文本的文件名-A #
: 显示匹配行及其后面的#行-B #
: 显示匹配行及其前面的#行-C #
: 显示匹配行及其前后的#行
正则表达式
.
: 匹配任意单个字符*
: 匹配前面的字符任意次(包括0次)[...]
: 字符集,匹配括号中的任意字符[^...]
: 反向字符集,匹配不在括号中的任意字符^
: 行的开始$
: 行的结束\<
: 词的开始\>
: 词的结束\(\)
: 分组标记\w
: 匹配文字和数字字符\W
: 匹配非单词字符\+
: 匹配一个或多个前面的字符\?
: 匹配0个或一个前面的字符{n}
: 精确匹配n次{n,}
: 至少匹配n次{n,m}
: 至少匹配n次,至多匹配m次
示例
# 查找文件中包含"error"的行
grep 'error' log.txt
# 查找文件中包含"error"的行,并显示行号
grep -n 'error' log.txt
# 查找文件中包含"error"的行,并显示匹配行前后的2行
grep -C 2 'error' log.txt
# 查找当前目录下所有.txt文件中包含"error"的行
grep -r 'error' *.txt
# 使用正则表达式,匹配以a开头,以b结尾的单词
egrep '\ba\w*b\b' log.txt
以上是grep
和egrep
的基本用法和常见示例,它们是文本处理的强大工具,可以帮助开发者和系统管理员快速定位和处理文本数据。