当前位置: 首页 > news >正文

SHELL脚本学习(十一)正则表达式

一、锚点字符
1.1 锚点行首

脱字符(^)指出行首位置

$ cat < file1
test line1
test line2
test line3
line4 test#打印所有包括文本 test的行
$ sed -n '/test/p' file1
test line1
test line2
test line3
line4 test#打印所有以test为首的行
$ sed -n '/^test/p' file1
test line1
test line2
test line3
1.2 锚点行尾

美元符号($)指出行尾位置

$ cat < file1
test line1
test line2
test line3
line4 test#打印所有以test结尾的行
$ sed -n '/test$/p' file1
line4 test
二、点字符

点字符(.)能够匹配除换行符之外的所有字符。

$ cat<file
cat
hatat
a t$ sed -n '/.at/p' file
cat
hatat

空格也是一个字符

三、字符组

方括号 [] 用于定义字符组,字符组内的任一字符匹配,即为匹配。

$ cat<file
cat
hatat
a t
ubuntu@VM-8-14-ubuntu:~$ sed -n '/[ch]at/p' file
cat
hat
四、排除型字符组

在字符组前加上脱字符即为排除型字符组。排除型字符组的语义正好和字符组相反,不匹配字符组内的任一字符。


$ cat<file
cat
hatat
a t$ sed -n '/[^ch]at/p' fileat
五、区间

可以单连字符(-)表示区间。即 起始字符-结束字符。

$ sed -n '/[A-Z][Aa][Tt]/p' file
HAT
CAT$ sed -n '/[a-z][Aa][Tt]/p' file
cat
hat

A-Z 表示 当前字符 要匹配单个 大写字母
a-z 表示 当前字符 要匹配单个 小写字母

六、特殊字符

除了定义自己的字符组,BRE(basic regular expression 基础正则表达式)还提供了一些特殊字符组。

BRE特殊字符组
字符组描述
[[ :alpha:]]匹配任意字符字符,a-z A-Z
[[:alnum:]]匹配任意字母数字,z-a A-Z 0-9
[[:blank:]]匹配空格或制表符
[[:digit:]]匹配0-9中的数字
[[:lower:]]匹配小写字母 a-z
[[:print:]]匹配任意可打印字符
[[:punct:]]匹配标点符号
[[:space:]]匹配任意空白符。空格、制表符、换行符、回车等。。。
[[:upper:]]匹配任意大写字母 A-Z

特殊字符组的使用方式和普通字符组一样。

$ cat <file
cat
hatat
a t
HAT
CAT$ sed -n '/[[:upper:]][Aa][Tt]/p' file
HAT
CAT$ sed -n '/[[:lower:]][Aa][Tt]/p' file
cat
hat
七、星号 *

在字符后面加 星号*,表示该字符必须匹配0次或多次。

$ echo "hello" | sed -n '/hel*o/p'
hello
$ echo "heo" | sed -n '/hel*o/p'
heo
$ echo "heto" | sed -n '/hel*o/p'
$ 
http://www.lryc.cn/news/378843.html

相关文章:

  • Leetcode Java学习记录——代码随想录哈希表篇
  • 我又挖到宝了!小米、352、希喂宠物空气净化器除毛能力PK
  • 每月 GitHub 探索|10 款引领科技趋势的开源项目
  • 【如何让新增的Android.mk参与编译】
  • 【windows|009】计算机网络基础知识
  • C语言循环中获取之前变量的值
  • must be built with the ios 17 sdk or later,included in Xcode 15 or later.
  • Unity2D计算两个物体的距离
  • Spring IOC 控制反转(注解版)
  • 串口触摸屏的键盘控制
  • xss初识(xss-lab)
  • Autodesk Revit产品痛点
  • 如何使用Windows备份轻松将数据转移到新电脑?这里有详细步骤
  • 【linux】操作系统使用wget下载网络文件,内核tcpv4部分运行日志
  • QT中常用控件的样式美化,已上传相应的qss样式和图片资源
  • Vue form表单验证
  • vue.extend解决vue页面转构造函数暴露js供全局使用
  • Java中如何处理异常?
  • wordpress站群搭建3api代码生成和swagger使用
  • 如何在使用 Qt 时打印到控制台
  • ffmpeg音视频开发从入门到精通——ffmpeg下载编译与安装
  • 数据通信与网络(三)
  • 盲盒小程序模式?有什么功能?
  • 【MySQL进阶之路 | 高级篇】InnoDB搜索引擎行格式
  • 大数据面试-Scala
  • 76.最小覆盖子串
  • 深度学习算法informer(时序预测)(三)(Encoder)
  • HTML和CSS基础(一)
  • 低代码平台教你两步把SQL直接转换为RESTful API
  • JavaWeb阶段学习知识点(二)