[转帖]如何为多个字符串和模式使用Grep

如何,多个,字符串,模式,使用,grep · 浏览次数 : 0

小编点评

**使用 grep 搜索多个模式的语法** 使用 grep 搜索多个模式时,可以使用以下语法: ``` grep 'pattern1\\|pattern2' file... ``` 其中: * `pattern1` 和 `pattern2` 是您要搜索的模式字符串。 * `file` 是您要搜索的文本文件。 **使用扩展的正则表达式** 可以使用 `grep -E`选项来使用扩展的正则表达式。扩展的正则表达式不需要使用反斜杠转义运算符。 **使用多个字符串搜索** 可以使用 `grep -w`选项来搜索字符串中包含的单词。单词字符包括字母数字字符(a-z,A-Z和0-9)和下划线(_)。所有其他字符均视为非单词字符。 **示例** 以下示例展示了如何使用上述语法搜索多个字符串: ``` grep 'fatal\\|error\\|critical' /var/log/nginx/error.log ``` 这将搜索字符串 "fatal"、"error" 和 "critical" 在 Nginx 日志文件中。 **更多信息** 有关 grep 的更多选项和语法,请访问我们的 Grep 命令页面: ``` /Linux/2020-05/163191.htm ```

正文

 

[日期:2020-05-14] 来源:Linux公社  作者:醉落红尘 [字体:  ]
 

grep是一个功能强大的命令行工具,可让您在一个或多个输入文件中搜索与正则表达式匹配的行,并将每个匹配的行写入标准输出。

在本文中,我们将向您展示如何使用GNU grep搜索多个字符串或模式。

Grep多种模式

GNU grep支持三种正则表达式语法,Basic,Extended和Perl兼容。 如果未指定任何正则表达式类型,则grep会将搜索模式解释为基本正则表达式。

要搜索多个模式,请使用OR(交替)运算符。

交替运算符 |(竖线)允许您指定不同的可能匹配项,这些匹配项可以是文字字符串或表达式集。 在所有正则表达式运算符中,此运算符的优先级最低。

使用grep基本正则表达式搜索多个模式的语法如下:

grep 'pattern1\|pattern2' file...

实例:

[linuxidc@linux:~/www.linuxidc.com]$ grep 'MainWindow\|QComboBox' linuxidc.py

如何为多个字符串和模式使用Grep

使用基本正则表达式时,元字符将解释为文字字符。 为了保留元字符的特殊含义,必须使用反斜杠(\)对其进行转义。 这就是为什么我们用斜杠转义OR运算符(|)的原因。

要将模式解释为扩展的正则表达式,请调用grep -E(或--extended-regexp)选项。 使用扩展的正则表达式时,不要转义|运算符:

$grep -E 'pattern1|pattern2' file...

[linuxidc@linux:~/www.linuxidc.com]$ grep -E 'MainWindow|QComboBox' linuxidc.py

有关如何构造正则表达式的更多信息,请查看我们的文章Grep regex。(见https://www.linuxidc.com/Linux/2020-05/163192.htm

Grep多个字符串

文字字符串是最基本的模式。

在以下示例中,我们正在Nginx日志错误文件中搜索所有出现致命,错误和严重的单词:

$grep 'fatal\|error\|critical' /var/log/nginx/error.log

如果要搜索的字符串包含空格,请用双引号将其引起来。

这是使用扩展正则表达式的相同示例,它消除了对运算符|进行转义的需要。

$grep -E 'fatal|error|critical' /var/log/nginx/error.log

默认情况下,grep区分大小写。 这意味着将大写和小写字符视为不同的字符。

要在搜索时忽略大小写,请使用-i选项调用grep(或 --ignore-case):

$grep -i 'fatal\|error\|critical' /var/log/nginx/error.log

搜索字符串时,grep将显示该字符串嵌入较大字符串中的所有行。 因此,如果您要搜索“错误”,则grep还将在较大的单词(例如“ errorless”或“ antiterrorists”)中嵌入“ error”的行。

要仅返回指定字符串是整个单词(用非单词字符括起来)的那些行,请使用-w(或--word-regexp)选项:

$grep -w 'fatal\|error\|critical' /var/log/nginx/error.log

文字字符包括字母数字字符(a-z,A-Z和0-9)和下划线(_)。 所有其他字符均视为非单词字符。

有关grep选项的更多详细信息,请访问我们的Grep命令。https://www.linuxidc.com/Linux/2020-05/163191.htm

总结

我们已经向您展示了如何grep搜索多个模式,字符串和单词。

如果您有任何问题或反馈,请随时发表评论。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

与[转帖]如何为多个字符串和模式使用Grep相似的内容:

[转帖]如何为多个字符串和模式使用Grep

[日期:2020-05-14] 来源:Linux公社 作者:醉落红尘 [字体:大 中 小] grep是一个功能强大的命令行工具,可让您在一个或多个输入文件中搜索与正则表达式匹配的行,并将每个匹配的行写入标准输出。 在本文中,我们将向您展示如何使用GNU grep搜索多个字符串或模式。 Grep多种模

[转帖]【JVM】字节码执行引擎

引入 class文件就是字节码文件,是由虚拟机执行的文件。也就是java语言和C & C++语言的区别就是,整个编译执行过程多了一个虚拟机这一步。这个在 类文件结构 中已经解释。上一节讲了虚拟机是如何加载一个class的,这一节就讲解虚拟机是如何执行class文件的。 运行时栈帧结构 1.定义 栈是

[转帖]Linux性能测试之unixbench

https://www.modb.pro/db/487945 大家好,昨天为大家带来了一篇关于在Linux下性能测试的文章《性能测试之LTP》,今天继续为大家推荐系列工具之unixbench,本工具用于Linux中cpu系统的测试,详情请查看百度,这里不多赘述,本文主要用于演示如何使用此工具。本文使

[转帖]Linux性能测试之unixbench

https://www.modb.pro/db/487945 大家好,昨天为大家带来了一篇关于在Linux下性能测试的文章《性能测试之LTP》,今天继续为大家推荐系列工具之unixbench,本工具用于Linux中cpu系统的测试,详情请查看百度,这里不多赘述,本文主要用于演示如何使用此工具。本文使

[转帖]关于Bonree ONE 2.0,那些运维人不知道的一切

http://blog.itpub.net/31545813/viewspace-2924710/ 近年来,伴随着数字经济的不断深入,以云原生、Devops等为代表的新技术快速发展。传统的IT监控工具多样、分散、庞杂,并且数据种类杂、缺乏关联性,导致整个IT系统不具备真正的可观测性。那么,如何快速发

[转帖]Kafka 核心技术与实战学习笔记(七)kafka集群参数配置(上)

一.Broker 端参数 Broke存储信息配置 log.dirs:非常重要,指定Broker需要使用的若干文件目录路径,没有默认值必须亲自指定。log.dir:他只能表示单个路径,补充上一个参数用。 如何设置: 只要设置log.dirs,不要设置log.dir线上环境一定要为log.dirs配置多

[转帖]JVM系列之:你知道Java有多少种内存溢出吗

本文为《深入学习 JVM 系列》第二十五篇文章 Java内存区域 关于这部分内容大多来源于《深入理解Java虚拟机》一书。 Java 运行时数据区域(JDK8)如下图所示: 关于上述提到的线程共享和线程隔离区域,下图做详细讲解: 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的

[转帖]采用cat与EOF组合添加多行内容时防止变量解析的解决办法

https://blog.51cto.com/xoyabc/1718355 【问题描述】 当采用cat与EOF组合添加多行内容时,若含有变量,则追加后的文件中是变量对应的的值,并不是变量本身。 如$a对应的值为111,执行以下命令后 cat >> /etc/profile << EOF $a $a

[转帖]通过Nginx和Nginx Plus阻止DDoS攻击

分布式拒绝服务攻击(DDoS)指的是通过多台机器向一个服务或者网站发送大量看似合法的数据包使其网络阻塞、资源耗尽从而不能为正常用户提供正常服务的攻击手段。随着互联网带宽的增加和相关工具的不断发布,这种攻击的实施难度越来越低,有大量IDC托管机房、商业站点、游戏服务商一直饱受DDoS攻击的困扰,那么如

[转帖]如何在一个Docker中同时运行多个程序进程?

https://cloud.tencent.com/developer/article/1683445 我们都知道Docker容器的哲学是一个Docker容器只运行一个进程,但是有时候我们就是需要在一个Docker容器中运行多个进程 那么基本思路是在Dockerfile 的CMD 或者 ENTRYP