sed正则表达式

news2024/9/20 8:42:23

很多linux命令支持正则表达式,sed也不例外。

 
行开始 ( ^ )

插入符^匹配一行的开始。比如说,匹配以103打头的行:

sed -n '/^103/p' data.txt

注意,插入符只有在表达式的首位时,才表示行首匹配。 

行尾( $) 

美元符$匹配行尾。比如说,输出以g结尾的行:

 sed -n '/g$/p' data.txt

单字符 (.)

句点(.)匹配除行字符结尾的任何单个字符。一个点匹配一个字符,两个点匹配两个,三个点匹配三个,以此类推。

比如,把L及随后的一个字符替换为Lee:

sed -n 's/L./Lee/p' data.txt

 

 字符出现零或多次(*)

星号(*)表示它之前的字符出现零或多次。比如说:’1*’表示匹配零个或多个连续的1.

 比如说,有这样一个log文件,其内容如下:

log: Input Validated
log:
log:  testing resumed
log:
log:output created

 假设你只关注有内容的行,那么可以这样做:

sed -n '/log: *./ p' log.txt

注意星号后面有一个句点,这是必要的。否则它会输出所有行。 

字符出现一次或多次(\+) 

元字符“\+”匹配它之前的字符,它出现一或多次。比如,在上面的log文件里,匹配有log:后跟空格的行:

sed -n '/log: \+/ p' log.txt

字符出现零或一次 (\?) 

元字符(\?) 表示匹配它之前的字符,出现零或一次。

sed -n '/log: \?/ p' log.txt

元字符转义 (\) 

如果需要匹配包含元字符的内容(比如说星号、句点),那么,需要对元字符进行转义。

sed -n '/127\.0\.0\.1/ p' /etc/hosts

字符集匹配 ([0-9])

字符集用方括号表示,它用于匹配集合里提及的元素。比如说,匹配包含2、3或4的行:

sed -n '/[234]/ p' data.txt

在方括号里,可以用连接符-来表示范围。比如  [0123456789]等价于 [0-9],它还可用于字符集,比如说[a-z],[A-Z] 。

sed -n '/[2-4]/ p' data.txt

 逻辑或(|) 

管道符(|) 表示逻辑或,“subexpression1|subexpression2”匹配subexpression1或subexpression2。

sed -n '/101\|102/ p' data.txt

 注意管道符是转义的。

准确匹配m次出现({m}) 

 假设有一个numbers.txt文件,其内容如下:

1
12
123
1234
12345
123456
  • 打印包含阿拉伯数字字符的行:
sed -n '/[0-9]/ p' numbers.txt
  •  打印五位数
sed -n '/^[0-9]\{5\}$/ p' numbers.txt

指定出现次数的范围({m,n}) 

  • 打印3到五位数
sed -n '/^[0-9]\{3,5\}$/ p' numbers.txt

范围可以只指定下限,或上限,比如{m,}或{,n}

sed -n '/^[0-9]\{3,\}$/ p' numbers.txt
sed -n '/^[0-9]\{,5\}$/ p' numbers.txt

单词边界 (\b)

元字符(\b)用于匹配单词边界。它匹配单词间的字符。

sed -n '/Zhao\b/ p' data.txt

反向引用(\n)

这里(\n) 中的n是数值。反向引用可以提取表达式里的内容供后面使用。

比如要"2022 2021 2023"按次序排列,其他就可以使用反向引用中\2 \1 \3来排序,排列的结果为"2021 2022 2023"

echo -e "2022 2021 2023" | sed -e "s/\(.*\) \(.*\) \(.*\)/\2 \1 \3/g"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/987834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎样理解 Object 类中的 clone() 方法?

目录 1. clone() 方法说明 2. JVM 内存模型 3. 浅拷贝(浅克隆)与深拷贝(深克隆)的区别 4. 使用 clone() 克隆方法需要注意的事项 5. Object 类中的 clone() 方法为浅克隆 1. clone() 方法说明 clone() 方法是 Java.lang.Object 类中已经定义好的一个方法,该方…

文心一言、讯飞星火与GPT-4/3.5在回答中文历史问题的表现

最近,随着备受关注的文心一言正式免费向全社会开放,再次引起了社会层面对国产大模型的兴趣。 以文心一言为代表的国产大模型性能究竟如何?如果将它们相互比较,并且和GPT系列模型等国际前沿水平的LLM进行比较,会得到什么…

【系统设计系列】 应用层与微服务

系统设计系列初衷 System Design Primer: 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. 中文版: https://github.com/donnemart…

超全60000多字详解 14 种设计模式 (多图+代码+总结+Demo)

超全60000多字详解 14 种设计模式 (多图代码总结Demo) 之前读耗子叔文章时,看到过有句话没有实践,再多的理论都是扯淡,个人很赞同。你觉得自己学会了,但实践与学会之间有着很大差别。 单例模式 (Singleton Pattern) 定义或概念 …

水滴图 echarts lable失真显示很多9 水滴图 显示99999999

解决办法: 添加一个 seriesName lable用seriesName <template><div ref"EchartLiquidfill" class"EchartLiquidfill" :style"{ width: width }" /> </template><script> export default {name: "EchartLiquidfil…

第8章 驱动模块编译进内核实验(iTOP-RK3568开发板驱动开发指南 )

通过上一章的学习&#xff0c;我们学会了使用menuconfig图形化配置工具&#xff0c;以及了解了menuconfig相关的文件&#xff1a;Kconfig .config XXXdefconfig。本章节学习将helloworld驱动编译进内核。 输入“cd drivers/char”进入到 drivers/char 目录下&#xff0c;然后输…

2023工博会,正运动超高速PCIe实时运动控制卡应用预览(一)

展会倒计时&#xff1a;11天 本次的中国国际工业博览会正运动技术将携超高速PCIe实时运动控制卡亮相。 •为智能装备提供高速高精运动控制解决方案&#xff1b; •内部搭载运动控制实时内核MotionRT7; •提供多路高速IO输入输出&#xff0c;具备多种实时运动控制功能&#x…

Maven安装(超详解)

下载地址:Maven – Download Apache Maven 在提供的资料中,已经提供了下载好的安装包。如下 1、解压 apache-maven-3.9.4-bin.zip(解压即安装) bin目录 : 存放的是可执行命令。(mvn 命令重点关注) conf目录 :存放Maven的配置文件。(settings.xml配置文件后期需要修改)…

Unity中的场景加载

1、同步场景 2、异步加载 3、保留物体到下个场景中

vue 前端 问题整理

列表显示字典数据 template里面的vue代码 <el-table-column label"性别" align"center" prop"sex"><template #default"scope"> <!-- <dict-tag :optionssysUserSex :value"scope.row.sex&quo…

HTTP代理与代理IP的区别

HTTP代理和代理IP是网络安全和隐私保护中常用的两种工具。HTTP代理是一种代理服务器&#xff0c;它使用HTTP协议来转发客户端请求和响应目标服务器的响应。代理IP是一种匿名代理服务器&#xff0c;它隐藏了用户的真实IP地址&#xff0c;以保护用户的隐私和安全。本文将介绍HTTP…

从“13天”到“0天”延时,揭秘幸福里离线SLA保障最佳实践

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 “幸福里”是抖音集团旗下集内容、社区、工具于一体的房产媒体综合信息平台&#xff0c;致力于提供多样化房产资讯、定制找房需求。随着幸福里业务发展&#xff0c;…

注塑机数据采集的数据类型 物理量种类

1.状态数据&#xff1a;运行、停机、故障、待机等机台状态数据&#xff1b; 2.产量数据&#xff1a;模次、产量数据&#xff1b; 3.效率数据&#xff1a;稼动率、节拍、运行时间、停机时间、故障时间、待机时间等数据&#xff1b; 4.工艺数据&#xff1a;工艺数据保存、调机…

驱动开发--day2(内核不同模块的相互访问、字符设备驱动、led控制实验代码及现象)

实现三盏灯的控制&#xff0c;编写应用程序测试 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define LED1_MODER 0X50006000 #define LED1_ODR 0X50006014 #define LED1_RCC 0X50000A28#define LED2_MODER 0X50007000 #define LED2_ODR 0X50007014#endif mychrdev.c #inc…

关于andriod App开发---查看与导出logcat日志内容

adb rootadb remountadb logcat&#xff08;开始打印指令&#xff09;按住 CtrlC&#xff08;终止打印指令&#xff09;保存日志指令&#xff1a;adb logcat -v time >D:\log\logcat.txt日志导出完成&#xff08;如下图&#xff09; 抓包工具&#xff1a; Charles(IOS 基础…

长春泛域名证书和通配符证书有什么区别

通配符SSL证书是一种数字证书&#xff0c;只是因为数字证书保护的域名数量或者类型不一样&#xff0c;将数字证书分为了单域名SSL证书、多域名SSL证书和通配符SSL证书三种。今天就随SSL盾小编了解通配符SSL证书和泛域名SSL证书的关系。 1.根据保护的域名类型&#xff0c;通配符…

传感器融合带来多重好处

传感器融合是一个热门话题&#xff0c;正好与物联网的增长趋势相吻合&#xff0c;尤其是与自动驾驶汽车和先进的驾驶员辅助系统&#xff08;ADAS&#xff09;相连。这个概念本身并不是什么新鲜事物。在Google Scholar上进行的搜索确定了可追溯到1960年代或更早的概念。但是如今…

云服务器下如何部署Flask项目详细操作步骤

参考网上各种方案&#xff0c;再结合之前学过的Django部署方案&#xff0c;最后确定Flask总体部署是基于&#xff1a;centos7nginxuwsgipython3Flask之上做的。 本地windows开发测试好了我的OCR项目&#xff0c;现在要部署我的OCR项目到云服务器上验证下。 第一步&#xff1a…

调用API接口的一些注意技巧

在实践中我们经常发现&#xff0c;很多同学都是直接请求调用和读取接口数据&#xff0c;而没有做状态码的判断&#xff0c;这在设计角度是非常不合理的。 另外&#xff0c;对于一些实时性要求不高的接口&#xff0c;更合理的做法应该是先把数据拉到本地缓存&#xff0c;再从缓存…

sql server 设置字段自增

1.将字段设置为主键&#xff1b; 2.将“标识规范”设置为是&#xff0c;这里注意切勿将默认值设置为0&#xff0c;否则无法选择“标识规范”