侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux egrep命令详解j教程:如何使用egrep搜索文本和正则表达式(附实例)

Linux egrep命令介绍

egrep是一个文本处理工具,用于在指定的位置搜索符合模式或正则表达式的文本。它的功能和grep -E相同,但是速度更快。egrep是E xtended G lobal R egular E xpression P rint的缩写,意思是扩展的全局正则表达式打印。egrep可以用于查找文件中的字符串、多个字符串或者复杂的正则表达式,也可以用于过滤文本、统计文本、比较文本等操作。

Linux egrep命令适用的Linux版本

linux egrep命令是GNU grep的一部分,linux egrep命令可以在多数Linux发行版(如Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora、Raspbian)的主要终端命令解释器(包括bash、zsh、csh、ksh、fish、tcsh)中使用。如果没有安装GNU grep,可以使用以下命令进行安装:

  • 在基于Debian的系统中,使用apt-get命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install grep
  • 在基于Red Hat的系统中,使用yum命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install grep
  • 在基于Arch的系统中,使用pacman命令:
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S grep

Linux egrep命令的基本语法

egrep命令的基本语法如下:

egrep [options] [search_term] [location]

egrep命令至少需要一个搜索词和一个搜索位置。语法中的各个部分是:

  • options:修改和指定搜索过程的参数。
  • search_term:一个字符串、多个字符串或者一个正则表达式。
  • location:一个文件、一个目录或者一个文件的路径,用于进行搜索。

Linux egrep命令的常用选项说明

egrep命令有很多选项,可以用于控制搜索的行为和输出的格式。常用的egrep命令选项如下表所示:

选项说明
-c统计并打印匹配的行数,而不是打印匹配的行。
-v打印不匹配的行,即反向匹配。
-i忽略搜索词的大小写。
-l只打印匹配的文件名,不打印匹配的行号或者其他信息。
-L只打印不匹配的文件名,与-l选项相反。
-e允许在搜索词的开头使用‘-’符号。如果不指定,shell会将搜索词作为选项来执行,并返回错误。
-w只打印包含整个单词的行。单词构成字符是字母、数字和下划线。匹配的子串必须由非单词构成字符分隔。
-x只打印与整行匹配的字符串。
-m NUMBER继续搜索匹配,直到匹配的数量达到NUMBER为止。
-o只打印匹配的部分,而不是整行。
-n打印每个匹配的行以及相应的行号。对于多个文件,还打印文件名和行号。
-r在指定的目录及其子目录中递归地搜索搜索词。最后一个参数是要检查的目录。‘.’(点)表示当前目录。
-b显示匹配在文件中的位置。
-B (n)打印包含搜索词的行和之前的n行。
-A (n)打印包含搜索词的行和之后的n行。
-C (n)打印包含搜索词的行和之前和之后的n行。

Linux egrep命令的实例

egrep命令的实例有很多,可以根据不同的需求和场景来使用。以下是一些常见的egrep命令的实例:

  • 在文件中搜索一个字符串
# 在my_text文件中搜索man字符串
[linux@bashcommandnotfound.cn ~]$ egrep man my_text
  • 在文件中搜索多个字符串
# 在my_text文件中搜索man或woman字符串,使用|符号分隔
[linux@bashcommandnotfound.cn ~]$ egrep 'man|woman' my_text
  • 在文件中搜索正则表达式
# 在my_text文件中搜索以a开头,以n结尾的四个字母的单词,使用^和$表示开头和结尾,使用.表示任意字符
[linux@bashcommandnotfound.cn ~]$ egrep '^a..n$' my_text
  • 在文件中搜索不区分大小写的字符串
# 在my_text文件中搜索man字符串,忽略大小写,使用-i选项
[linux@bashcommandnotfound.cn ~]$ egrep -i man my_text
  • 在文件中搜索不匹配的字符串
# 在my_text文件中搜索不包含man字符串的行,使用-v选项
[linux@bashcommandnotfound.cn ~]$ egrep -v man my_text
  • 在文件中搜索整个单词
# 在my_text文件中搜索man作为一个单独的单词,而不是作为其他单词的一部分,使用-w选项
[linux@bashcommandnotfound.cn ~]$ egrep -w man my_text
  • 在文件中搜索整行匹配的字符串
# 在my_text文件中搜索只包含man字符串的行,使用-x选项
[linux@bashcommandnotfound.cn ~]$ egrep -x man my_text
  • 在文件中搜索匹配的次数
# 在my_text文件中统计man字符串出现的次数,使用-c选项
[linux@bashcommandnotfound.cn ~]$ egrep -c man my_text
  • 在文件中搜索匹配的位置
# 在my_text文件中显示man字符串在文件中的位置,使用-b选项
[linux@bashcommandnotfound.cn ~]$ egrep -b man my_text
  • 在文件中搜索匹配的上下文
# 在my_text文件中显示man字符串以及之前的两行和之后的三行,使用-B和-A选项
[linux@bashcommandnotfound.cn ~]$ egrep -B 2 -A 3 man my_text
  • 在文件中搜索匹配的部分
# 在my_text文件中只显示man字符串,而不是整行,使用-o选项
[linux@bashcommandnotfound.cn ~]$ egrep -o man my_text
  • 在文件中搜索匹配的行号
# 在my_text文件中显示man字符串所在的行号,使用-n选项
[linux@bashcommandnotfound.cn ~]$ egrep -n man my_text
  • 在目录中递归地搜索匹配的文件
# 在当前目录及其子目录中搜索包含man字符串的文件,使用-r选项
[linux@bashcommandnotfound.cn ~]$ egrep -r man .
  • 在多个文件中搜索匹配的文件名
# 在file1和file2中搜索包含man字符串的文件名,使用-l选项
[linux@bashcommandnotfound.cn ~]$ egrep -l man file1 file2
  • 在多个文件中搜索不匹配的文件名
# 在file1和file2中搜索不包含man字符串的文件名,使用-L选项
[linux@bashcommandnotfound.cn ~]$ egrep -L man file1 file2

Linux egrep命令的注意事项

  • egrep命令是区分大小写的,除非使用-i选项。
  • egrep命令默认将?,+,|等符号作为元字符,如果要匹配这些符号本身,需要使用反斜杠转义。
  • egrep命令如果包含空格或者特殊字符,需要用单引号或者双引号括起来,否则会被shell解释为多个参数。
  • egrep命令的正则表达式和其他工具或语言的正则表达式可能有些差异,需要注意区分。
  • egrep命令的搜索词如果是中文,需要使用UTF-8编码的文件,否则可能出现乱码或者无法匹配的情况。
0

评论区