Linux:shell脚本:基础使用(4)《正则表达式-grep工具》

这篇具有很好参考价值的文章主要介绍了Linux:shell脚本:基础使用(4)《正则表达式-grep工具》。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

正则表达式定义:

        使用单个字符串来描述,匹配一系列符合某个句法规则的字符串

正则表达式的组成:

        普通字符串: 大小写字母,数字,标点符号及一些其他符号

        元字符:在正则表达式中具有特殊意义的专用字符

正则表达式不能单独使用,需要配合一些命令 如 grep sed 等命令 


正则表达式

我们先创建一个文件用于测试

he was short and fat.
He was wearing a blue polo shirt with black pants.
The home of Football on BBC Sport online.
the tongue is boneless but it breaks bones.12!
google is the best tools for search keyword.
The year ahead will test our political establishment to the li
PI=3.141592653589793238462643383249901429
a wood cross!
Actions speak louder than words

#woood #
#woooooood #
AxyzxyzxyzxyzC
I bet this place is really spooky late at night!
Misfortunes never come alone/single.
I shouldn't have lett so tast.

以上字符是我准备的一个文件的内容,等会我们用grep命令使用正则表达式去检索内容

 文件名称无所谓,我的叫tarro.txt

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本


 grep

 我们使用grep查询里面某一个指定的字符串  the

grep 'the' tarro.txt  

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

里面每行带有the字符串的就出来了

如果想知道我们查找的字符串在第几行 

grep -n 'the' tarro.txt  

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

前面的数字就是在文件里的行,也就是这段在文件中的几行几行

如果想知道在文件中第几行,并且不区分大小写,也就是我们指定的字符串无论大小写都展示出来

grep -in 'the' tarro.txt 

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

这样我们查找出来的就不区分大小写了,即使我们查的是小写the,加了-i 那么大写小写都会有

 如果正好相反我们不想查包含指定字符串的行

grep -nv 'the' tarro.txt 

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

-v就是反向查找,我们后面指定的字符串就反过来,就查找不带他们的行,反向查找不包含the的行


 利用中括号[]来查找集合字符

[] ---里面无论有几个字符,都仅代表一个字符,为‘或’关系
[^]   --- 括号里面的‘^’是取反的意思

查找包含shirt 或short的行 

grep -n 'sh[io]rt' tarro.txt

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

可以看到他们中级的字符不一样,我们使用了查找  以sh  开通  rt结尾,中间o或者i  两个就全出来了

查找重复单个字符‘oo’的行

grep -n 'oo' test.txt 

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

里面只要是两个oo相连的字符串就被查询出来了 

查找‘oo’前不是‘w’的行 

grep -n '[^w]oo' tarro.txt 

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

去掉了w开头的,那为什么#woood # 和 #woooooood # 没被去掉,因为他们相连的字符串是以#开头的,你可以和上一个比对一下

查找‘oo’前不是小写字母的行 

grep -n '[^a-z]oo' tarro.txt

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

现在前面小写的a-z开通的都被去掉了,F是大写的所以还在 

查找‘oo’前不是大写字母的行

grep -n '[^A-Z]oo' tarro.txt 

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

刚刚那个F开头的就没了,就剩下一些小写开头的行了

查找包含数字的行

 grep -n '[0-9]' tarro.txt 

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

上图只要是行内带有数字的行就被查出来了 

 查找行首^与行尾字符$

小数点‘.’在正则表达式中为元字符,需要使用转义字符‘\’将其转化为普通字符

查找以小数点‘.’结尾的行。

grep -n '\.$' tarro.txt

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

查找空行 

grep -n '^$' test.txt 

查找以‘w’开头,‘d’结尾共4个字符的行 

grep -n 'w..d' tarro.txt

Linux:shell脚本:基础使用(4)《正则表达式-grep工具》,正则表达式,运维,服务器,shell脚本

查询至少包含两个o以上的字符串

grep -n 'ooo*' tarro.txt  

查找以‘w’开头,中间至少包含一个‘o'的,‘d’结尾的行

grep -n 'woo*d' tarro.txt  

查找以‘w’开头,‘d’结尾 中间字符可有可无 的行 

grep -n 'w.*d' test.txt 

查询任意数字的行 

grep -n '[0-9][0-9]*' test.txt 


  查找连续字符范围{}

使用'.' 和'*'可以设置零个或无限多个重复的字符
如果要限制一个范围则使用‘{}’

查看2个o的字符 

grep -n 'o\{2\}' test.txt 

查看w开头,d结尾,中间为2-5个o的字符串
grep -n 'wo\{2,5\}d' test.txt 

查看w开头,d结尾,中间为2以上o的字符串
grep -n 'wo\{2,\}d' test.txt  


基础正则表达式的常见元字符

\b   单词的开头或结尾,只匹配一个位置,不匹配分隔标点符号和空格    \bHello\b
\d   一个数字,等价于 [0-9]    0\d\d-\d{8} 固定电话
*      数量,它前面的内容以连续使用的任意次数以达到整个表达式匹配,可以是0次匹配  .* 
+     和* 类似,但至少匹配1次, 匹配一个或多个     \d+
?    和上面两个类似,重复0次或一次
.      匹配除了换行符以外任意字符  
\s    匹配任意的空白符、制表符、换行符、中文全角空格等
\w 匹配字母、数字、汉字或者下划线
^   用来查找的字符串的开头   ^\d{5,12}$    5~12位的QQ
$   用来查找的字符串的结尾
{n}       前面必须连续重复匹配n次,\d{8}   \bw{6}\b 刚好6个字符的单词
{n,m}   前面必须连续重复匹配n~m次,
{n,}       前面必须连续重复匹配n~更多次,
\   如果需要查找元字符,需要转义 
[]   里面的字符可以不用转义,用来定义匹配集合   [?.*()]

3.扩展正则表达式----egrep、awk命令支持
3.1 扩展正则表达式的常见元字符
+        重复一个或者一个以上的前一个字符

?        零个或者一个的前一个字符

|        使用或者(or)的方式找出多个字符

()        查找“组”字符串

()+        辨别多个重复的组文章来源地址https://www.toymoban.com/news/detail-657456.html

到了这里,关于Linux:shell脚本:基础使用(4)《正则表达式-grep工具》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux Shell 脚本编程学习之【第3章 正则表达式 (第一部分)】

    1、正则表达式是由一串字符和元字符构成的字符串,简称 RE(Regular Expression)。 2、正则表达式起到数据过滤作用。 3、POSIX 标准将正则表达式分为两类:基本的正则表达式和扩展的正则表达式,大部分 Linux 应用和工具仅支持基本的正则表达式。 Linux Shell 以一串字符作为表达式

    2024年02月16日
    浏览(37)
  • Linux Shell 脚本编程学习之【第3章 正则表达式 (第二部分) grep命令】

    1、文本搜索工具 2、GREP 是Global search Regular Expression and Print out the line的简称,即全面搜索正则表达式并把行打印出来。 3、grep命令的模式十分灵活,可以是字符串,也可以是变量,还可以是正则表达式。模式中包含空格,则必须用双引号括起来。 选 项 意 义 -c 只输出匹配行

    2024年02月16日
    浏览(42)
  • shell脚本正则表达式

    声明: 以下内容为个人笔记,内容不完全正确,请谨慎参考。 含义: 正则表达式使用的每个单独字符串来描述、匹配一些列符合语法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。在Linux中,grep,sed,awk等文本处理工具都支

    2024年04月22日
    浏览(31)
  • Shell脚本攻略:通配符、正则表达式

    目录 一、理论 1.通配符 2.正则表达式 二、实验 1.通配符 2.正则表达式 (1)概念 通配符只用于匹配文件名、目录名等,不能用于匹配文件内容,而且是已存在的文件或者目录。 各个版本的shell都有通配符,这些通配符是一些特殊的字符, 用户可以在命令行的参数中使用这些

    2024年02月07日
    浏览(36)
  • Shell编程基础(十三)正则表达式

    格式:^ 表达式 $ 在不同的场景下,定义是一样,但使用要按照具体的命令去调用,中间的表达式都是通用的 普通元字符 所谓元数据,就是描述数据的数据,在这里就是描述正则的数据 ^ 表示正则从字符串 整行 起始位置匹配 ^abc 匹配 以abc开始的字符串 $ 表示正则一直匹配到

    2024年02月14日
    浏览(32)
  • Linux Shell :正则表达式

    先来看一句 Shell 代码: dpkg --list : dpkg 是 Debian 系列 Linux 发行版(如 Ubuntu)的包管理工具。 --list 选项用于列出所有已安装的软件包。 | :这是一个管道符号,用于将前一个命令的输出作为后一个命令的输入。在这里, dpkg --list 的输出被直接传递给 grep 命令。 grep -E -o \\\'cu

    2024年02月08日
    浏览(35)
  • shell 正则表达式详解

    目录 正则表达式 一,什么是正则表达式 二,为什么使用正则表达式 三,如何使用正则表达式 示例: 四,基本正则表达式 基本正则表达式示例: 正则表达式字符集示例: 五,扩展正则表达式 扩展正则表达式示例: 扩展:        正则表达式是通过一些特殊字符的排列,

    2024年01月17日
    浏览(36)
  • 【shell编程入门】正则表达式

    特殊字符 描述 [] 方括号表达式,表示匹配的字符集合,例如  [0-9] 、 [abcde] () 标记子表达式起止位置 * 匹配前面的子表达式零或多次 + 匹配前面的子表达式一或多次 ? 匹配前面的子表达式零或一次 转义字符,除了常用转义外,还有: b  匹配单词边界; B  匹配非单词边

    2024年01月23日
    浏览(47)
  • Shell编程之正则表达式

    Linux中的正则表达式(regular expression)和通配符(wildcard)都是用于匹配字符串的工具,但它们之间存在一些区别和应用场景的不同。 正则表达式是描述一种字符串匹配的模式,通过特殊的字符和语法,可以检查一个字符串是否匹配某种模式,匹配成功后可以进行子串替换、取出符

    2024年02月01日
    浏览(36)
  • MFC使用正则表达式基础步骤

    ①头文件包含 #include ②明确声明正则表达式 更多正则表达式可查阅:https://blog.csdn.net/Next_Second/article/details/126696589 ③CString 转string ④进行匹配 完整函数

    2024年02月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包