0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

shell脚本基础:正则表达式grep

FPGA学姐 来源:FPGA学姐 2023-05-29 09:29 次阅读

Linux上有许多命令可以使用正则表达式,其中最常见的是grep命令和sed命令。正则表达式有多种类型,每种类型中可以使用的元字符类型不同。最常见的是基本正则表达式和扩展正则表达式。

▲grep命令

grep [选项] 匹配模式 输入文件 ...

【选项】

对于grep指令来说会将指定的匹配模式视为基本正则表达式,但是如果指定了-E选项,则会视为扩展正则表达式。此外,如果指定-F选项,则指定的匹配模式将不会被当作正则表达式,而会被当作固定的普通字符串来处理。

-i选项用于忽略字母大小写的差异。如果指定了该选项,就不再区分字母的大小写,而是同时对大写和小写字母进行匹配。

-v选项用于对匹配的结果进行取反操作.使用该选项之后则正相反,被输出的是没有匹配到指定匹配模式的行。

-n选项用于在输出结果的同时输出匹配的行号。指定了这个选项后,输出结果的格式为“行号:行内容”。

-H和-h是与文件名相关的两个选项。如果没有指定任何选项,则grep命令的基本处理方式是只输出匹配到的行的内容,不输出文件名。但是,如果输入文件有两个及以上,那么在输出匹配结果时,grep命令还会在匹配到的行前面加上文件名,即以“文件名:行的内容”的格式输出。

如果与-n选项搭配使用,就可以同时输出文件名和行号,输出结果的格式为“文件名:行号:行内容”。

-o选项用于输出匹配到指定模式的那一部分内容。通常,grep命令会输出匹配到指定模式的行的全部内容,但如果指定了-o选项,则不再输出整行,而只输出匹配到的部分。

-L选项和-l选项可以以文件为单位统计某个文件是否包含指定的匹配模式,检查文件内部的行。

-q选项可以让grep命令不管能否匹配到结果,都不输出任何内容。这个选项主要在if语句中作为判断条件使用

#!/bin/bash
if grep -q bash /etc/shell; then
  echo Found
fi

【匹配模式】

接下来介绍用于进行位置匹配的元字符。这种元字符也称为“锚”,可以指定字符串中用于匹配的位置。

1、在匹配一个字符的元字符中,最常用的是.(点号)。这个元字符可以匹配任意一个字符。类似于linux指令中常用的*,如下

查找test打头的所有字符
$grep '/tset./' example.txt


匹配括号中的任意一个字符
$grep '/test[123]/' example.txt
/test1/file_1
/test1/file_2
/test2/file_1
/test3/file_x
/work/test1/file_x


在括号内的开始处添加^字符可以表示相反的意思(即除123以外的数字)
$grep '/test[^123]/' example.txt

2、^和$。^用于匹配行首,$用于匹配行尾。

比如,^/test1/用于匹配行首为/test1/的字符串,所以当某行的中间出现/test1/时,是不可能匹配的。

3、用于进行重复匹配的元字符

fe50df1e-fd66-11ed-90ce-dac502259ad0.png

例如,ab*表示a之后的b要重复0次或更多次。因此,它可以匹配到a、ab、abb等。

如果想要明确指定重复次数,可以使用{m,n}指定重复次数。比如ab{2,4}可以匹配到abb、abbb和abbbb。在扩展正则表达式中,指定时可以不用而直接使用{m,n}、{m}或{m,}。还可以使用+和?元字符。这两个元字符分别表示“重复1次及以上”和“重复0次或者1次”。

4、辅助型的元字符

字符用于取消其后的元字符的特殊含义,将其作为普通的字符进行匹配。

例如:.表示匹配.本身,而不是匹配任意一个字符。

( )用于对正则表达式分组。在指定重复次数时,可以使用它对分组后的内容整体进行指定。

例如:a(bc)*可以匹配到a、abc、abcbc等字符串。

|可以连接多个正则表达式,匹配满足其中任意一个正则表达式的字符串。

例如:abc|xyz可以匹配到abc或xyz,abc|xyz|123可以匹配到abc、xyz、123中的任意一个。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206736
  • Shell
    +关注

    关注

    1

    文章

    358

    浏览量

    22902
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14635
  • grep
    +关注

    关注

    0

    文章

    22

    浏览量

    4681
  • 正则表达式
    +关注

    关注

    0

    文章

    25

    浏览量

    3433

原文标题:shell脚本基础(七)正则表达式grep

文章出处:【微信号:FPGA学姐,微信公众号:FPGA学姐】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是正则表达式正则表达式如何工作?哪些语法规则适用正则表达式

    正则表达式又称规则表达式(Regular Expression,在代码中常简写为 regex、regexp 或 RE),是一种用于匹配、查找、替换文本的强大工具。它能够以特定的模式匹配字符串,从而
    的头像 发表于 11-03 14:41 566次阅读
    什么是<b class='flag-5'>正则表达式</b>?<b class='flag-5'>正则表达式</b>如何工作?哪些语法规则适用<b class='flag-5'>正则表达式</b>?

    shell正则表达式学习

    正则表达式在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多
    发表于 07-25 17:18

    浅析正则表达式

    正则表达式与django
    发表于 08-29 11:09

    正则表达式运用解析

    正则表达式的运用二
    发表于 09-11 08:59

    总结linux脚本语法和正则表达式的应用

    每日学一点之linux脚本语法以及正则表达式基础
    发表于 11-08 09:23

    初识 Python 正则表达式

    正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。Python 自 1.5 版本起增加了re 模块,它提供 Perl
    发表于 03-17 16:44

    正则表达式以及实用的匹配规则概述

    的字符串。正则表达式的搜索和匹配功能非常强大,以至于几乎所有的脚本语言(比如Python, Perl,JavaScript),Java等高级编程语言,甚至grep等一些Linux命令,都支持
    发表于 09-16 14:23

    深入浅出boost正则表达式

    什么是正则表达式正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express. 如果您不知道什么是正则表达式,请看这篇文章:深入浅出之正则表达式
    发表于 09-08 18:09 9次下载

    精通正则表达式

    详细的快速正则表达式的查询电子书,简单而丰富
    发表于 05-16 18:04 5次下载

    Python正则表达式的学习指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化
    发表于 09-15 08:00 0次下载
    Python<b class='flag-5'>正则表达式</b>的学习指南

    Python正则表达式指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化
    发表于 03-26 09:13 10次下载
    Python<b class='flag-5'>正则表达式</b>指南

    C语言如何使用正则表达式

    C语言的正则表达式规则,特此跟大家分享。
    的头像 发表于 03-16 08:41 4287次阅读

    python正则表达式中的常用函数

    编译正则表达式模式,返回一个正则对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率。)
    的头像 发表于 03-18 16:12 1557次阅读

    Linux入门之正则表达式

    一些约定好的匹配规则,但由于规则较多,可能比较容易忘记。 本文会先整理出所有的正则表达式以及其含义,接下来会利用grep命令,详细介绍每种正则表达式的使用方式,并给出案例。
    的头像 发表于 05-12 15:31 566次阅读
    Linux入门之<b class='flag-5'>正则表达式</b>

    Python中的正则表达式

    哈喽大家好,我是了不起,今天给大家讲Python中的正则表达式 在Python中,正则表达式是一种强大的文本处理工具,它可以用来匹配、搜索、替换文本。正则表达式是一个特殊的字符序列,它可以描述一类
    的头像 发表于 06-21 16:52 710次阅读