shell脚本之正则表达式

一、基础正则表达式实例: 元字符:

在Linux系统中常见的文件处理工具中grep和sed支持基础正则表达式。

grep命令选项:

      -i:查找时不区分大小写;
      -v:查找时反向输出,如查找不包含某些字符的内容;
      -n:表示查找出结果后显示行号;

这三个选项可以结合使用,如“-in”,查找时不区分大小写并显示行号。 示例:

[root@localhost ~]# grep -n 'the' test.txt                   #查找test文件中包含字符“the”的行
#可以将选项改为“-vn”来查找不包含“the”的行。
[root@localhost ~]# grep -n "sh[io]rt" test.txt                   #[io]表示匹配 i 或o的显示出来
#[ ]中无论有几个字符都仅代表匹配一个字符即可。
[root@localhost ~]# grep -n 'oo' test.txt                 #查找包含字符“oo”的行。
[root@localhost ~]# grep -n 'ooo*' test.txt              #查找包含至少两个o以上的字符串。
[root@localhost ~]# grep -n 'o\{2\}' test.txt             #查找包含两个“o”的字符串。
 [root@localhost ~]# grep -n 'o\{2,5\}' test.txt          #查找包含2~5个o的字符串。
 [root@localhost ~]# grep -n 'o\{2,\}' test.txt             #查找包含两个以上“o”的字符串。
[root@localhost ~]# grep -n '[^w]oo' test.txt           #查找“oo”前面不是w的字符串。
[root@localhost ~]# grep -n '[^a-z]oo' test.txt          #查找oo前不是小写字母的行。
[root@localhost ~]# grep -n '[0-9]' test.txt               #查找包含数字的行。
[root@localhost ~]# grep -n '^the' test.txt             #查找以“the”开头的行。
[root@localhost ~]# grep -n '^[a-z]' test.txt             #查找以小写字母开头的行。
[root@localhost ~]# grep -n '^[A-Z]' test.txt            #查找以大写字母开头的行。 
[root@localhost ~]# grep -n '^[^a-zA-Z]' test.txt       #查找不以字母开头的行。

#   “^”在[ ] 号外面表示定位行首,也就是以某些内容开头,若在[ ]内则表示反向选择。
[root@localhost ~]# grep -n '\.$' test.txt             #查找以 “ .  ” 结尾的行。
[root@localhost ~]# grep -n 'w..d' test.txt             #查找w开头,中间两个未知字符,d结尾的行。
[root@localhost ~]# grep -n 'woo*d' test.txt     #查找w开头d结尾,中间至少包含一个o的字符串。
[root@localhost ~]# grep -n 'w.*d' test.txt        #查找w开头d结尾,中间的字符可有可无的字符串。
[root@localhost ~]# grep -n '[0-9][0-9]*' test.txt            #查询任意数字所在行

二、扩展正则表达式 一般来说基础正则表达式足以我们使用了,但如果想要简化整个指令,那么就可以使用扩展正则表达式,如果使用扩展正则表达式,需要使用egrep或awk命令,常见的扩展正则表达式的元字符主要包括如下几个:

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程微刊

手机199开头的号码的正则验证

以前的正则验证里面,如果是199开头或者166开头的手机号码就没有办法通过验证,会给这些用户带来一定的麻烦

41220
来自专栏技术圈

Postgresql(一) 致不了解的那些事

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

12530
来自专栏PHPer技术栈

PHP7.+系列新特性和新变更

组合比较符号用于比较两个表达式。当$a小于、等于或大于$b时它分别返回-1、0或1,比较规则延续常规比较规则。对象不能进行比较

12830
来自专栏SAMshare

Machine Learning-模型评估与调参 ——曲线调参

我们讲到的曲线,具体指的是学习曲线(learning curve)和验证曲线(validation curve)。

7110
来自专栏Web前端开发

JavaScript正则表达式

正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式,是用于匹配字符串中字符组合的模式。

11110
来自专栏AI研习社

机器学习面试中常考的知识点和代码实现(一)

本文是机器学习面试中常考的知识点和代码实现,也是作为一个算法工程师必会的理论基础知识;既然是以面试为主要目的,亦不可以篇概全,请谅解,有问题可提出。

10920
来自专栏Web前端开发

ES6 正则扩展

ES6 改变了这种行为。若 RegExp 构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。

6020
来自专栏机器之心

新手上路:图文解读助你理解和使用正则表达式

对于大多数没有接受过正式 CS 教育的人来说,正则表达式似乎只有最核心的 Unix 程序员才敢碰。

7710
来自专栏技术圈

经验风险、结构风险、正则项

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

6510
来自专栏追逐时光

常用正则表达式

  这些正则皆为日常开发总结,一般常用的都用,来源有来自自己总结的,还有的是从网上记录下来的,希望对大家有个帮助,完好正则提高程序性能!

14830

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励