文本三剑客之sed

sed

一.概念

sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。
sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储一个命令文本文件中。

二.工作流程

·读取: sed从输入流(文件、管道、标准输入〉中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space)。
·执行: 默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
·显示: 发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。

在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。
注意:默认情况下所有的sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

三.命令格式

sed -e '操作' 文件l 文件2 ...
sed -n -e '操作' 文件1 文件2 ...
sed -f 脚本文件 文件1 文件2 ...
sed -i -e '操作' 文件1 文件2 ...

sed -e 'n{
操作l
操作2
...
}' 文件1 文件2 ...

四.常用选项

选项说明
-e或–expression=表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用
-f或–file=表示用指定的脚本文件来处理输入的文本文件
-h或–help显示帮助
-n、–quiet或silent禁止sed编辑器输出,但可以与p命令一起使用完成输出
-i直接修改目标文本文件

五.常用操作

选项说明
s替换,替换指定字符
d删除,删除选定的行
a增加,在当前行下面增加一行指定内容
i插入,在选定行上面插入一行指定内容
c替换,将选定行替换为指定内容
y字符转换,转换前后的字符长度必须相同
p打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容,如果有非打印字符,则以ASCII码输出。其通常与"-n"选项一起使用
=打印行号
l(小写L)打印数据流中的文本和不可打印的AscII字符(比如结束符$、制表符\t)

六.实验

1.查询

sed -n '行号p'  打印指定行号的行
sed -n '行1,行2 p' 打印 行1与行2区间的行
sed -n '行1,+n p' 打印 行1与其之后的n行

sed -n '/字符串/p' 打印包含字符串的行
sed -n '/正则表达式/p' 打印所有包含正则能够匹配带内容的行

在这里插入图片描述
在这里插入图片描述

2.删除

sed '行号 d' 删除指定行号的行
sed '行1,行2 d' 删除行1与行2之间的行

sed '/字符串/ d' 删除包含字符串的行
sed '/正则表达式/ d' 删除所有正则能够匹配到内容的行
sed '行号,/字符串/ d' 删除指定的行到第一个出现字符串的行 
sed '/字符串1/,/字符串2/ d' 第一个包含字符串1的行开始删除到从第一个包含字符串2的行,之后的行会重复之前的规则操作
删除空行
1)sed '/^$/d' 文件
2)grep -v '^$'
3)tr -s '\n'

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.替换

sed 's/旧字符串/新字符串/' 替换匹配行的第一个对应的字符串

sed 's/旧字符串/新字符串/2' 替换匹配行的第二个对应的字符串

sed 's/旧字符串/新字符串/g' 替换匹配行所有的字符串

sed '行号 s/旧字符串/新字符串/' 替换指定行的对应的字符串

sed '行1,行2 s/旧字符串/新字符串/g'替换行1与行2区间的匹配行的对应的字符串

sed '/字符串/ s/旧字符串/新字符串/g' 在匹配到的字符串范围内,将旧字符串全部替换成新字符串

sed '/正则表达式/ s/旧字符串/新字符串/g' 在符合匹配条件的正则表达式范围内,将旧字符串全部替换成新字符串

sed '行号c xxxxx' 替换指定行的整行内容

sed '$c xxxxx' 替换最后行的整行内容

sed 'y/abc/123/'  替换所有对应的字符

将修改的内容保存到新文件

sed 's/旧字符串/新字符串/gw file' 把替换后的行内容保存到指定文件

sed -n s/旧字符串/新字符串/gp’> file

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.插入

sed '行号a xxxx' 在指定行下面插入内容
sed '/字符串/a xxxx' 在第一个指定字符串下面插入内容

sed '行号i xxxx'在指定行上面插入内容
sed '/字符串/i xxxx' 在第一个指定字符串上面插入内容

sed '行号r file' 在指定行下面读取文件内容

在这里插入图片描述
在这里插入图片描述

5.复制剪切

sed '/root/{H;d};$G' /etc/passwd	           #将包含root的行剪切到末尾,H表示复制到剪切板,G表示粘贴到指定行后

sed '1,2H;3,4G' /etc/passwd			       #将1、2行复制到3和4行的下面

echo "111222333" | sed -r 's/(111)(222)/\2\1/'	          #将字符 111 和 222 互换位置
echo "111222333" | sed -r 's/^(.)(.*)(.)$/\3\2\1/'		  #将第一个字符和最后一个字符互换

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】MINOTAUR: Multi-task Video Grounding From Multimodal Queries

背景动机 细粒度的视频理解已经成为增强现实(AR)和机器人应用开发的关键能力。为了达到这种级别的视频理解,智能体(例如虚拟助手)必须具备识别和推理视频中捕获的事件和对象的能力,处理一系列视觉任务,如活动检测、对象检索和(空间)时间基础…

ChatGPT教程(终极版)

纯小白关于ChatGPT入门,你看我这篇文章就够了。 如果你已经用上了ChatGPT,更要恭喜你挖到宝藏,后面的高级技巧一定能让你有收获。 文章包含以下内容: 一、ChatGPT是啥?有什么用; 二、ChatGPT如何注册&…

jetson nx 用windows远程连接

VNC Viewer远程连接 一、jetson nx配置vnc 1、安装客户端 sudo apt-get install xrdp vnc4server xbase-clients2、进入nano/nx桌面,打开“Setting–>Desktop sharing”,没反应,据说是bug,我试过nano和nx都一样。首先输入下…

【c语言】组件化打包—静态库

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

IoT -- 解读物联网四层架构

本文以物联网四层架构为基础&#xff0c;从物联网产品设计的角度来解读每层架构的功能以及主要内容&#xff0c;旨在为物联网产品设计以及实现思路感兴趣的物联网产品或研发人员有些帮助。 通过互联网&#xff0c;人和人之间可以传递和交流信息。物联网&#xff0c;IoT&#x…

网络安全:Hydra 端口爆破工具.(九头蛇)

网络安全&#xff1a;Hydra 端口爆破工具.&#xff08;九头蛇&#xff09; Hydra 也叫九头蛇&#xff0c;是一款开源的暴力PJ工具&#xff0c;集成在kali当中。可以对多种服务的账号和密码进行爆破&#xff0c;包括 Web 登录、数据库、SSH、FTP 等服务. 目录&#xff1a; 网络…

调用api实现ChatGPT接口余额查询

在ChatGPT官网可以查询接口使用额度&#xff0c;但是官方并没有提供相应的API给开发者调用。我们可以通过破解的方式找到它的API。方法如下&#xff1a; 1. 使用Chrome浏览器打开https://platform.openai.com/account/usage 2. 打开开发者工具&#xff0c;然后刷新网页&#xf…

我让gpt写了一段正则表达式代码,可是运行报错,可以帮忙看看哪里出了问题?...

点击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 忽闻海上有仙山&#xff0c;山在虚无缥缈间。 大家好&#xff0c;我是皮皮。 一、前言 前几天在Python最强王者群【HZL】问了一个Python正则表达式的问…

ES6知识点

目录 1、let、cons、var的区别 2、const对象的属性可以修改吗 3、如果new一个箭头函数会怎么样 4、箭头函数和普通函数的区别&#xff1a; 5、扩展运算符的作用及使用场景 1、let、cons、var的区别 1️⃣&#xff1a;块级作用域&#xff1a;块作用域由{}包括&#xff0c;le…

ERM LABS 与 The Sandbox 战略合作,将真人密室逃脱游戏引进元宇宙

将现实生活中的体验带入一个全新的维度&#xff01;ERM LABS 专注于将现实生活中的娱乐及冒险体验以游戏独特架构设计扩展到元宇宙裡。与 The Sandbox 合作&#xff0c;该项目旨在为全球合作的真人密室逃脱场所提供无限开放形的线上虚拟世界&#xff0c;让玩家尽情享受考验智商…

09——svg中path的使用

一、path 是 svg 中最强大的图形 用于定义一个 路径所有命令均允许小写字母。大写 表示绝对定位&#xff0c;小写 表示 相对定位 &#xff08;相对于上一个结束的坐标&#xff09;d 属性中包含所有路径的点&#xff0c;可根据命令缩写 自由组合 命令 名称 …

最全的分布式事务详情,它来啰~

我们首先得理解什么是分布式事务呢&#xff1f;分布式事务是指在分布式系统中&#xff0c;涉及多个计算机或服务器的操作序列&#xff0c;这些操作需要满足一致性和可靠性的要求。每个操作要么全部成功执行&#xff0c;要么全部回滚&#xff0c;以保持数据的一致性和完整性。 …

假期出行小程序+chatgpt旅游攻略

马上五一了,如果想出去旅游,需要提取规划好路线图,我们可以借助chatgpt的路线规划功能帮我们生成一份攻略,按照攻略我们就可以愉快的出去玩耍了。 本文结合chatgpt,利用低代码工具帮我们制作一份旅行导览小程序,可以按照行程方便的出行。 1 制定攻略 我们在聊天窗口输…

从小白到黑客高手:一份全面详细的学习路线指南

前言 黑客从入门到精通需要经过深入的学习和实践&#xff0c;这是一个需要长时间投入和大量精力的过程。在这份学习路线中&#xff0c;我将为你介绍黑客学习的基本知识和技能&#xff0c;帮助你逐步掌握黑客技能。 黑客 一、入门阶段 1.了解计算机基础知识 学习计算机基础知…

thinkPhP6.0安装教程图解--PHP框架安装

ThinkPhP 6.0 安装 1.环境检查 首先&#xff0c;thinkphp6.0&#xff0c;要求php的环境是7.2.5及以上的&#xff0c;所以先检查自己的php环境是否符合要求。 在cmd命令窗口中输入php -v 或者没有配置环境变量的话&#xff0c;可以在php编辑器中输出php_info()或则PHP_VERSIO…

【鲁棒优化、无功优化】两阶段鲁棒优化的主动配电网动态无功优化【IEEE33节点】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

A股市场上股票行情数据接口有那几种?

L2行情数据接口相比Level-1接口相比&#xff0c;L2行情市场具有数据更完整、推送速度更及时的优势&#xff0c;帮助投资者及时把握盘中主要资金流&#xff0c;做出更准确的投资决策。简而言之&#xff0c;Level-2最大的作用就是提前看到主力的大单&#xff0c;对于追逐日线跌停…

Linux高并发服务器开发01:Linux系统编程入门

GCC 什么是GCC GCC工作流程 GCC常用的参数选项 GCC和G的区别 静态库 什么是库 静态库的制作 先编译生成对应的.o文件 gcc -c add.c sub.c mult.c div.c -I …/include/ 再将.o文件打包成静态库 ar rcs libcalc.a add.o sub.o mult.o div.o 使用的时候-l指定库名称 gcc main.c…

【论文简述】Multi-View Stereo Representation Revisit: Region-Aware MVSNet(CVPR 2023)

一、论文简述 1. 第一作者&#xff1a;Yisu Zhang 2. 发表年份&#xff1a;2023 3. 发表期刊&#xff1a;CVPR 4. 关键词&#xff1a;MVS、3D重建、符号距离场 5. 探索动机&#xff1a;像素深度估计仍存在两个棘手的缺陷。一是无纹理区域的估计置信度较低。二是物体边界附…

RTSP/RTP on TCP 协议抓包记录

仅做记录&#xff0c;无他。 RTSP OPTIONS 客户端发送&#xff1a; 服务端响应 RTSP DESCRIBE 客户端发送 服务端响应 RTSP SETTUP 客户端发送请求 服务端响应 RTSP PLAY 客户端发送请求 服务端响应 RTP包 这个比较复杂&#xff0c;得好好解析&#xff0…