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

Linux sed

文章目录

  • 1. 基本功能
  • 2.sed替换s
    • sed配合grep和管道操作符的例子
  • 3.sed中的删除和添加
    • 3.1 d删除
    • 3.2 a i添加
      • 添加多行
  • 4.sed行替换
      • 替换包含某字符的行
  • 5.单字符替换 y
  • 6. p打印命令
    • 打印含有目标字符的行
      • sed中包含多个指令,使用{}
  • 7.sed w 写入文件
  • 8.sed r 读取文件
  • 9.sed q 退出脚本——及时终止命令执行
  • 10.综合实例
    • 批量指令sed指令

1. 基本功能

  • 对文本中的某一行做增删改查
sed [optionsl'addrcommand[flags]' filename
//addr是指令操作的行,不写默认是全部
//command是操作指令,添加、修改等
例如:sed -e '1s/test/trial/g' data.txt
1为地址,表示操作data.txt的第一行;
s为cmd,表示替换;**命令选项**
-e:直接在vim的命令行模式上进行sed动作编辑,此为默认选项,缺省也可以。但是文件本身不被修改,只是会将执行后的结果打印;
-f:将sed的动作写在一个文件内,用-f filename执行filename内的sed动作;
-i:直接修改文件内容;
-n:只打印模式匹配的行;
-r:支持扩展表达式:**sed常用内部命令**
a 在匹配后面添加
i 在匹配前面添加
p 打印
d 删除
S 替换
c 更改
y 转换**flags**
相关描述参考下图

在这里插入图片描述

2.sed替换s

[address]s/pattern/replacement/flagssed指令只有-i下才会直接修改文件flag标记中的n表示将第几个目标字符做替换,如果在某一行中只有1个目标字符,则当n>1时,替换不生效。
  • 如下图所示,使用p这个flag的时候必须配合-n,这样会只打印匹配上的行。通常用于原文件行数过多,只想看操作的行的时候。
    在这里插入图片描述
  • 使用w flag,可以将匹配上的行输出到一个文件,如下图所示,输出到了data1.txt
    在这里插入图片描述
  • 使用反斜线对特殊字符做转义
    在这里插入图片描述

sed配合grep和管道操作符的例子

在这里插入图片描述

3.sed中的删除和添加

3.1 d删除

sed 'd' data.txt
sed d删除
-所有
sed '3d' data.txt
- 3行
sed'1,3d' data.txt
-1到3行
-sed '2,4d' data.txt
-2到4行

在这里插入图片描述

3.2 a i添加

sed a和i添加
sed '3i This is an inserted line.' data.txt
//在第3行前面添加sed '3a This is an appended line. data.txt
//在第3行后面添加

在这里插入图片描述

添加多行

sed '1i This is one line of new text.\
This is another line of new text. data.txt

在这里插入图片描述

4.sed行替换

sed c行替换
sed '3c This is a changed line of text.' data.txt
//无视第三行的内容,直接进行行替换,源文件没有被替换,只是打印出来替换结果了。

在这里插入图片描述

替换包含某字符的行

sed '/number 3/c\
> This is a changed line of text.' data.txt
  • 上面将一个命令拆多行写了,下面是一行完成的。都是将含有number 3字符的行进行整行替换
    在这里插入图片描述

5.单字符替换 y

sed y转换脚本
单个字符一对一替换
sed 'y/123/789/" data.txt
  • 将123替换为789,虽然123写在了一起,但是也是按照单个字符处理的,不是按照123三个字符来理解。
    在这里插入图片描述
  • 继续添加一个l,也是一样,不论在什么位置,都会进行单个字符替换
    在这里插入图片描述
echo "This 1 is a test of 1 try." | sed 'y/123/456/'
This 4 is a test of 4 try

在这里插入图片描述

6. p打印命令

sed -n '/number 3/p' data.txt
用-n选项和p命令配合使用,我们可以禁止输出其他行,只打印包含匹配文本模式的行。 如果需要在
修改之前查看行,也可以使用打印命令,比如与替换或修改命令一起使用。可以创建一个脚本在修改行之前显示该行

打印含有目标字符的行

在这里插入图片描述

sed中包含多个指令,使用{}

sed -n '/3/{
>p
>s/line/test/p
> }' data.txt
This is line number 3.
This is test number 3.
查找包含数字3的行,然后执行两条命令。首先,脚本用p命令来打印出原始行;然后它用s命令替换文本,并用p标记打印出替换结果。输出同时显示了原来的行文本和新的行文本

在这里插入图片描述

7.sed w 写入文件

sed '1,2w test.txt' data.txt
//将data.txt中的1~2行写入test.txt
//上述指令没有-n,还是会打印data.txt的内容sed -n '/demo/w demo.txt' data.txt
//将包含demo的行打印到demo.txt,-n加上就不会打印无关行了。

在这里插入图片描述

8.sed r 读取文件

sed '3r data1.txt' data.txt
sed 命令会将 filename 文件中的内容插入到 address 指定行的后面

在这里插入图片描述

 sed '$r data1.txt' data.txt 插入到文件末尾

在这里插入图片描述

9.sed q 退出脚本——及时终止命令执行

sed '2q' test.txt
  • 使用q只打印前2行
    在这里插入图片描述
sed '/number/{s/number/num/;q}' data.txt
//包含多个命令用{},多个命令之间使用;分隔
//带q则执行完一次替换后指令就终止,不带则会针对全部行做替换

在这里插入图片描述

10.综合实例

sed '1...' data.txt
//直接指定行号
sed '1,3...' data.txt
//指定行的范围
sed '1,$...' data.txt
//从某行开始到最后一行
sed '/zyr/s/bash/csh/' /etc/passwd
//使用字符匹配,找到包含zyr的行做替换
//使用正则匹配做替换
sed '{s/h[0-9]/\<&\>/1; s/h[0-9]/\<&\>/2}' test.txt
//此处的&在sed语法中表示匹配上的字符本身
//{}表示对一行内容做多个操作,多个操作之间使用;分割

在这里插入图片描述

  • 为了简化指令,可以将操作对象往前提,这样只写一次就行
    在这里插入图片描述
    其实sed的指令在vim中都可以使用命令模式直接敲然后回车执行,但是不利用批量指令。
    这时就可以创建一个sed的脚本来操作目标文本!!

批量指令sed指令

创建sed.sh,将指令写入;使用-f调用指令脚本
在这里插入图片描述
下图为sed.sh脚本中的内容,这样可以分行写,很清晰。
在这里插入图片描述

相关文章:

Linux sed

文章目录 1. 基本功能2.sed替换ssed配合grep和管道操作符的例子 3.sed中的删除和添加3.1 d删除3.2 a i添加添加多行 4.sed行替换替换包含某字符的行 5.单字符替换 y6. p打印命令打印含有目标字符的行sed中包含多个指令&#xff0c;使用{} 7.sed w 写入文件8.sed r 读取文件9.se…...

【MySQL】MySQL在Centos 7环境安装

目录 准备工作 第一步&#xff1a;卸载不要的环境 第二步&#xff1a;下载官方的mysql 第三步 上传到Linux中 第四步 安装 正式安装 启动 ​编辑 登录 准备工作 第一步&#xff1a;卸载不要的环境 使用root进行安装 如果是普通用户&#xff0c;使用 su - 命令&#…...

【CSS】一篇文章讲清楚screen、window和html元素的位置:top、left、width、height

一个Web网页从内到外的顺序是&#xff1a; 元素div,ul,table... → 页面body → 浏览器window → 屏幕screen 分类详情屏幕screen srceen.width - 屏幕的宽度 screen.height - 屏幕的高度&#xff08;屏幕未缩放时&#xff0c;表示屏幕分辨率&#xff09; screen.availLeft …...

铸造大型基础平板的结构应该怎样设计

设计大型基础平板的结构时&#xff0c;需要考虑以下几个方面&#xff1a; 地质条件&#xff1a;首先要了解工程所在地的地质条件&#xff0c;包括土质、地下水位、地震状况等。根据地质条件来选择合适的基础类型&#xff0c;如浅基、深基或地下连续墙等。 荷载分析&#xff1a…...

医院预约系统微信小程序APP前后端

医院预约系统具体功能介绍&#xff1a;展示信息、可以注册和登录&#xff0c; 预约&#xff08;包含各个科室的预约&#xff0c;可以预约每个各个医生&#xff09;&#xff0c;就诊引导包含预约的具体信息&#xff0c;包含就诊时间、就诊科室、就诊医生以及就诊人信息、和支付状…...

springboot数字化智慧城市管理系统源码

目录 ​系统开发环境 系统功能模块 系统特点 1、智慧城管移动端 2、案件受理 3、AI视频智识别分析 系统应用价值 1、提升案件办理效率 2、提升监管效能 3、提升行政执法水平 4、推进行政执法创新 智慧城管综合执法办案系统功能 现场移动执法 一般程序案件的网上办…...

【鸿蒙开发】第二十一章 Media媒体服务(一)

1 简介 Media Kit&#xff08;媒体服务&#xff09;提供了AVPlayer和AVRecorder用于播放、录制音视频。 在Media Kit的开发指导中&#xff0c;将介绍各种涉及音频、视频播放或录制功能场景的开发方式&#xff0c;指导开发者如何使用系统提供的音视频API实现对应功能。比如使用…...

【QT教程】QT6 Web应用实战

QT6 Web应用实战 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费…...

(我的创作纪念日)[MySQL]数据库原理7——喵喵期末不挂科

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;大大会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…...

普乐蛙VR航天体验馆设备VR太空飞船VR元宇宙展厅

三天小长假就要来啦&#xff01;五一假期也即将到来。老板们想捉住人流量这个财富密码吗&#xff1f;那快快行动起来&#xff01;开启VR体验项目&#xff0c;假期赚翻天&#xff01;小编亲测&#xff01;&#xff01;这款设备刺激好玩&#xff0c;想必会吸引各位家长小孩、学生…...

基于torch的图像识别训练策略与常用模块

数据预处理部分&#xff1a; 数据增强&#xff1a;torchvision中transforms模块自带功能&#xff0c;比较实用数据预处理&#xff1a;torchvision中transforms也帮我们实现好了&#xff0c;直接调用即可DataLoader模块直接读取batch数据 网络模块设置&#xff1a; 加载预训练…...

微信小程序制作圆形进度条

微信小程序制作圆形进度条 1. 建立文件夹 选择一个目录建立一个文件夹&#xff0c;比如 mycircle 吧&#xff0c;另外把对应 page 的相关文件都建立出来&#xff0c;包括 js&#xff0c;json&#xff0c;wxml 和 wxcc。 2. 开启元件属性 在 mycircle.json中开启 component 属…...

大模型(Large Models):探索人工智能领域的新边界

&#x1f31f;文章目录 &#x1f31f;大模型的定义与特点&#x1f31f;模型架构&#x1f31f;大模型的训练策略&#x1f31f;大模型的优化方法&#x1f31f;大模型的应用案例 随着人工智能技术的飞速发展&#xff0c;大模型&#xff08;Large Models&#xff09;成为了引领深度…...

缓存相关知识总结

一、缓存的作用和分类 缓存可以减少数据库的访问压力&#xff0c;提升整个网站的数据访问速度&#xff0c;改善数据库的写入性能。缓存可以分为两种&#xff1a; 缓存在应用服务器上的本地缓存&#xff1a;访问速度快&#xff0c;但受应用服务器内存限制 缓存在专门的分布式缓存…...

Mapmost Alpha:开启三维城市场景创作新纪元

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

【大模型完全入门手册】——引言

博主作为一名大模型开发算法工程师,很希望能够将所学到的以及实践中感悟到的内容梳理成为书籍。作为先导,以专栏的形式先整理内容,后续进行不断更新完善。希望能够构建起从理论到实践的全流程体系。 助力更多的人了解大模型,接触大模型,一起感受AI的魅力! 在当今人工智能…...

在 Vue 3 中使用 Axios 发送 POST 请求

在 Vue 3 中使用 Axios 发送 POST 请求需要首先安装 Axios&#xff0c;然后在 Vue 组件或 Vuex 中使用它。以下是一个简单的安装和使用案例&#xff1a; 安装 Axios 你可以使用 npm 或 yarn 来安装 Axios&#xff1a; npm install axios # 或者 yarn add axios 使用 Axios…...

【LeetCode刷题记录】189. 轮转数组

189 轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: …...

1.open3d处理点云数据的常见方法

1. 点云的读取、可视化、保存 在这里是读取的点云的pcd文件&#xff0c;代码如下&#xff1a; import open3d as o3dif __name__ __main__:#1.点云读取point o3d.io.read_point_cloud("E:\daima\huawei\img\change2.pcd")print(">",point)#2.点云可视…...

https和http有什么区别,为什么要用https

HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;和HTTP&#xff08;Hypertext Transfer Protocol&#xff09;之间的主要区别在于安全性。 安全性&#xff1a; HTTP是一种明文传输协议&#xff0c;数据在客户端和服务器之间以明文形式传输&#xff0c;容易…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...