专栏首页ITCoderGrep 使用多种样式

Grep 使用多种样式

grep是一个强大的命令行工具,它允许你在一个或者多个输入文件中匹配一个正则表达式,并且将每一个匹配结果输出到标准输出。

在本文中,我们将会向你展示如何使用GNU grep 来搜索多个字符串或者样式。

一、使用 Grep 搜索多个样式

GNU grep 支持三种正则表达式语法,基本的,扩展的,和兼容 Perl 的。当没有指定任何正则表达式,grep将搜索样式解释为基本的正则表达式。

想要搜索多个样式,使用 OR(间隔符)。

这个间隔操作符号(|)允许你指定不同的样式,例如字符串或者正则表达式。这个操作符比所有的正则表达式操作符的优先级都要低。

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

grep 'pattern1\|pattern2' file...

通常用单引号将正则表达式包裹起来,避免被 shell 转义。

当使用基本的正则表达式时,元字符将被解释为文字字符。想要保持元字符的意义,它们必须和\一起使用。这就是为什么我们避免将间隔符和\一起使用。

想要将样式解释为扩展的正则表达式,运行grep加上-E(或者--extended-regexp)选项。当使用扩展正则表达式,不要忘了|操作符。

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

想要获得更多关于编写正则表达式的信息,查询我们的文档 Grep regex

二、使用 Grep 搜索多个字符串

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

在下面的例子中,我们在 Nginx log 中 搜索所有的fatal, error, 和 critical

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

如果你搜索的字符包含空格,使用双引号包裹它。

这是使用扩展正则表达式的例子,避免将隔离符和\一起使用。

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

默认情况下,grep是大小写敏感的。这意味着大写和小写字符被区别对待。

想要大小写不敏感,运行 grep 加上-i选项。(或者 --ignore-case):

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

当搜索一个字符串时,grep将会显示所有包含该字符串的字符的行。所以,如果你搜索"error”,grep同时也会打印包含error的字符串的行,例如:“errorless” 和 “antiterrorists”。

想要返回仅仅包含指定字符整词的,使用-w(或者 --word-regexp)选项:

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

词语字符串包含 字符和数字(a-z, A-Z, and 0-9) ,还有下划线(_)。所有其他的字符被认为非词语字符。

想要获得更多关于grep选项的详细信息,浏览我们的文章 Grep command

三、总结

我们已经向你展示了如何使用grep来搜索多个样式,字符串和词语。

如果你有任何疑问,请通过以下方式联系我们:

微信: sn0wdr1am86

微信群: 加上面的微信,备注微信群

QQ: 3217680847

QQ 群: 82695646

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux 下的 Sysctl 命令

    作为一个 Linux 系统管理员,有时候你需要修改默认的内核行为。例如,你可能想要启用 SysRq 或者增加 Kernel 能够接受的连接数量。 内核参数可以在...

    雪梦科技
  • 如何在 Ubuntu 20.04 上安装 Memcached

    Memcached 是一个免费并且开源的高性能内存键值数据库。它主要用于系统缓存,通过缓存数据库中的结果来提高应用的响应速度。

    雪梦科技
  • 如何在 CentOS 8 上安装和配置 NFS 服务器

    网络文件系统(NFS)是一个分布式文件系统协议,它允许你通过网络共享远程文件夹。通过 NFS,你可以将远程文件夹挂载到你的系统上,并且操作远程机器的文件,就像本...

    雪梦科技
  • 3分钟短文 | grep 入门用法,匹配多字符串,多正则模式

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

    程序员小助手
  • java解决hash算法冲突

    看了ConcurrentHashMap的实现, 使用的是拉链法. 虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度...

    xiangzhihong
  • 前端学习之JavaScript

    尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScri...

    超蛋lhy
  • Servlet3.0新特性(从注解配置到websocket编程)

         Servlet3.0的出现是servlet史上最大的变革,其中的许多新特性大大的简化了web应用的开发,为广大劳苦的程序员减轻了压力,提高了web开发...

    Single
  • JVM调优日志解析分析

    -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)

    小勇DW3
  • 网页中添加下划线的方法汇总及优缺点

    本文主要介绍了添加下划线样式的几乎所有方法,并且比较了每一种方法的优缺点。没想到之前一直没有注意的下划线还有这么多玄机奥秘! 本文由 nzbin 翻译,艾凌风...

    叙帝利
  • JavaScript基础

    一 JavaScript的基础 1.1 JS的引入方式 1 直接编写 <script> alert('hello yuan') ...

    用户1214487

扫码关注云+社区

领取腾讯云代金券