sed笔记231127

-e基本正则,-E扩展版正则

  • -E, -r, --regexp-extended
    在脚本中使用扩展正则表达式(为保证可移植性使用 POSIX -E)。
  • -e--expression 接基本正则表达式, 可多次使用,多次过滤
  • -f--file 选项接脚本文件, 注意是脚本文件, 而不是输入文件

-e可以不写, 如果没有 -e, --expression, -f 或 --file 选项,那么第一个非选项参数被视为
sed脚本。

其他非选项参数被视为输入文件,如果没有输入文件,那么程序将从标准
输入读取数据。

和grep一样找出文本文件中的匹配行

默认都是普通版正则

# p要与-n连用, 不知为社么
sed -n /pattern/p x.txt
# ↑功能等效↓
sed -ne /pattern/p x.txt
# ↑功能等效↓
grep pattern x.txt
# ↑功能等效↓
cat x.txt | sed -n /pattern/p
# ↑功能等效↓
cat x.txt | sed -ne /pattern/p
# ↑功能等效↓
cat x.txt | grep pattern

扩展版正则

# p要与-n连用, 不知为社么
sed -nE /pattern/p x.txt
# ↑功能等效↓
grep -E pattern x.txt
# ↑功能等效↓
cat x.txt | sed -nE /pattern/p
# ↑功能等效↓
cat x.txt | grep -E pattern
sed查找替换
# 源文件不会被替换, 只输出的内容被替换
# g是整个文档, i是忽略大小写
sed "s/基本正则/替换内容/gi" x.txt
或
sed -e "s/基本正则/替换内容/gi" x.txt
或
sed -E "s/扩展正则/替换内容/gi" x.txt

基本正则和扩展正则

  • sed     用-E, -r, --regexp-extended 启用扩展版正则

  • grep   用-E,        --extended-regexp 启用扩展版正则

在基本正则表达式中,{n} 表示前面的字符连续出现n次,将会被匹配到。

在扩展正则表达式中,{n} 表示前面的字符连续出现n次,将会被匹配到。

在基本正则表达式中,( ) 表示分组,(ab) 表示将ab当做一个整体去处理。

在扩展正则表达式中,( ) 表示分组,(ab) 表示将ab当做一个整体去处理。

在扩展正则表达式中:

( ) 表示分组

(ab) 表示将ab当做一个整体去处理。

\1 表示引用整个表达式中第1个分组中的正则匹配到的结果。

\2 表示引用整个表达式中第2个分组中的正则匹配到的结果。

? 表示匹配其前面的字符0或1次

  • 表示匹配其前面的字符至少1次,或者连续多次,连续次数上不封顶。

{n} 表示前面的字符连续出现n次,将会被匹配到。

{x,y} 表示之前的字符至少连续出现x次,最多连续出现y次,都能被匹配到,换句话说,只要之前的字符连续出现的次数在x与y之间,即可被匹配到。

{,n} 表示之前的字符连续出现至多n次,最少0次,都会陪匹配到。

{n,}表示之前的字符连续出现至少n次,才会被匹配到。

看了上述总结以后,是不是已经想要放弃使用”基本正则表达式”了呢?因为与之相比,扩展正则表达式才更符合我们这些懒人的习惯,而且,扩展正则表达式的可读性也更高,毕竟很多符号少了前面的”\”,可读性就变强了。

扩展正则表达式中,还有一个常用的符号,是基本正则表达式中所没有的,它就是”|”

基本版正则

grep -e 'hello\|nihao' x.txt
或
sed -e 

扩展版正则

grep -E 'hello|nihao' x.txt

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

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

相关文章

excel单元格内换行按什么快捷键

如果我们使用excel软件的时候,因为一些日常的操作太过繁琐想要简化自己的操作步骤的话,其实是有很多快捷方式在其中的。那么对excel单元格内换行按什么快捷键这个问题,据小编所知我们可以在表格中使用Alt Enter来进行换行。详细内容就来看下…

C语言入门---位操作

目录 1. 两个数不同的二进制位个数 2.原码、反码、补码 3.不创建临时变量实现两个数的交换 4.求一个整数存储在内存中的二进制中1的个数 5. 特例-1 6.将指定的位置置1 7.将指定位置置1 8.a与a 9.||与&& 10.逗号表达式 11.srand与rand 12.sizeof 13.结构体初始…

操作系统 选择题 期末试题 考研真题 + 参考答案

1.(考研真题,单项选择题)单道批处理系统的主要缺点是( )。 A. CPU利用率不高 B.失去了交互性 C.不具备并行性 D.以上都不是 【参考答案】A 【解析】单道批处理系统的内存中只有一道程序,当该程序…

JVM字节码- long/double类型的比较

在 Java 虚拟机(JVM)字节码中,对于 double 和 long 类型的比较,没有直接等价于 iflt(用于整型比较)这样的指令。相反,比较 double 和 long 类型的值涉及到一些不同的步骤和指令。下面是如何在 J…

Node——Node.js基础

对Node.js中的基础知识进行讲解,包括全局变量、全局对象、全局函数以及用于实现模块化编程的exports和module对象等内容,这些知识是学习Node.js应用开发的基础。 1、Node.js全局对象 全局,即程序中任何地方都可以使用,Node.js内…

华为OD机试 - 分月饼(Java JS Python C)

题目描述 中秋节,公司分月饼,m 个员工,买了 n 个月饼,m ≤ n,每个员工至少分 1 个月饼,但可以分多个, 单人分到最多月饼的个数是 Max1 ,单人分到第二多月饼个数是 Max2 ,Max1 - Max2 ≤ 3 ,单人分到第 n - 1 多月饼个数是 Max(n-1),单人分到第n多月饼个数是 Max(n)…

【libGDX】加载G3DJ模型

1 前言 libGDX 提供了自己的 3D 格式模型文件,称为 G3D,包含 g3dj(Json 格式)和 g3db(Binary 格式)文件,官方介绍见 → importing-blender-models-in-libgdx。 对于 fbx 文件,libGDX…

python中的简单线性拟合

简单线性回归可以拟合线性关系的数据,一般使用一次函数或二次函数即可。 import numpy as np import matplotlib.pyplot as pltxnp.array([1,2,3,4,5,6,7,8,9,10]) ynp.array([2.5,4.5,4.8,5.5,6.0,7.0,7.8,8.0,9.0,10.0])#一次拟合函数 slope,interceptnp.polyfit…

大语言模型的好坏是由您提示水平高底决定的

大语言模型是有"嫌贫爱富“特点的,当你的水平高于大语言模型时它常常可以帮你,当你的水平低于大语言模型时它往往会骗你。 这主要是因为大语言模型在处理文本时具有较强的生成能力,可以根据已有的语境生成合乎逻辑的文本。当你的水平高于…

手机充电 显示连接耳机 (充电没外放声音) 并且充电速度很慢

现象 手机插入充电线充电 外放消失 按音量调节键 显示正在调节耳机音量 手机充电快充标识丢失 显示现在不是快充 充电速度很慢,边玩边用半小时不到2% 经测试:快充正常应该是20w,现在只有3w. 结论 排查后发现是数据线坏了,扔掉后随便换了根c2c的雷电线发现充电速度正常,不…

不受平台限制,Sketch 网页版震撼登场

Sketch 是一种基于 Mac 的矢量图形编辑器,可用于数字设计。其主要功能包括无损矢量编辑、完美像素精度和数百个插件同步功能,可导出预设和代码。它是目前流行的页面交互协作设计工具。但是 Sketch 最大的缺点是对 Windows/PC 用户不友好。严格来说&#…

使用 Java 来读取 Excel 文件,检查每一行中的 URL,并将不符合条件的行标记为红色

-- 日、时、分、秒,这是计时的单位,惜时就应该惜日、惜时、惜分、惜秒。 用 Java 来读取 Excel 文件,检查每一行中的 URL,并将不符合条件的行标记为红色。以下是一个简单的示例,使用 Apache POI 进行 Excel 操作&#…

从零开始学习typescript——流程控制

前言 默认情况下,所有的代码都是从上到下,从左到右顺序执行的。 #mermaid-svg-zf9e2mz73WPBbIzH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-zf9e2mz73WPBbIzH .error-icon{fill:#552222…

vue3+ts v-model 深度学习

<template><div><h1>我是App.vue组件</h1><div>isShpw:{{ isShow }}</div><div>text:{{ text }}</div><div><button click"isShow !isShow">开关</button></div><hr /><vModeVal…

在Matlab里安装gurobipy怎么安装教程

在Matlab 里安装gurobipy 先在CMD里激活&#xff0c; 然后添加系统环境变量 GRB_LICENSE_FILEC:\gurobi10.2\gurobi.lic 然后输入 addpath(D:\gurobi1003\win64\matlab) addpath(C:\gurobi1003\win64\matlab) addpath(C:\gurobi1002\win64\matlab) C:\gurobi1003\win64\m…

Excel如何比较两列数据的不同

当遇到exel有两个列表的数据&#xff0c;需要比较得到他们的不同的部分&#xff0c;并且得到一个不同的值的列表。示例如下&#xff1a; 目的是&#xff1a;通过比较&#xff0c;知道Column2的哪些值不在在Column1里。 WPS直接提供了这一个功能&#xff0c;如下图&#xff1a;…

【日常总结】Swagger 3.0 + 集成 knife4j ,并设置header入参

一、场景 环境&#xff1a; 二、问题 思路 &#xff1a; 三、解决方案 &#xff08;推荐&#xff09; Stage 1&#xff1a;接入knife4j 依赖 Stage 2&#xff1a;修改 yaml 配置 Stage 3&#xff1a;修改 swagger 3 配置文件 Stage 4&#xff1a;查看效果 Swagger UI …

python爬虫实习找工作练习测试(以下内容仅供参考学习)

要求&#xff1a;获取下图指定网站的指定数据 空气质量状况报告-中国环境监测总站 输入&#xff1a;用户输入下载时间范围&#xff0c;格式为2022-10 输出&#xff1a;将更新时间在2022年10月1日到31日之间的文件下载到本地目录&#xff08;可配置&#xff09;&#xff0c;并…

WordPress:构建强大的网站和博客的完美选择

WordPress&#xff1a;构建强大的网站和博客的完美选择 一、WordPress 简介1.1 WordPress 介绍1.2 WordPress 优势 二、部署LNMP环境2.1 前提条件2.2 关闭防火墙和SELinux2.3 安装Nginx2.4 安装MySQL2.5 安装PHP2.6 配置Nginx2.7 配置MySQL2.8 配置PHP2.9 测试访问LNMP平台 三、…

Java中的spring——面试题+答案(Spring框架)——第19期

当涉及到Spring框架的面试时&#xff0c;深入理解Spring的各个方面是至关重要的。 Spring IoC 和 DI Spring的IoC是什么&#xff1f; 答案&#xff1a; 控制反转&#xff08;IoC&#xff09;是一种设计模式&#xff0c;它将对象的创建和依赖关系的管理从应用程序代码中移到容器…