Linux:Shell编辑之文本处理器(sed)

目录

绪论

1、sed的原理:读取 执行 显示 三个过程

2、sed 文本内容处理工具,文件过大怎么办?

3、sed的操作选项

3.1 常用选项

3.2 操作符

3.3 行号的范围打印

3.4 对包含指定字符串的内容进行打印

3.5 删

3.5.1 正则表达式删除

3.6 替换

3.6.1 字母字符的大小写替换

3.7 整行替换和单字符替换

3.8 增加

3.9 sed命令当中字符串的位置进行交换

3.10 取日志范围 


绪论

sed:类似于vim就是一个文本编辑器,按行来编辑和处理,针对文件内容的行进行处理

主要作用是对文本内容进行增删改查,sed可以支持正则表达式,支持扩展正则表达式

1、sed的原理:读取 执行 显示 三个过程

读取:读取文本内容后,读取到的内容存放到临时的缓冲区,模式空间

执行:在模式空间,根据读取的文本内容,按行执行,除非指定引号,否则会遍历所有行,从上往下执行

显示:执行完后,把执行结果打印,如果要改变生效,模式空间被修改的内容会写入到指定的文件当中,只是操作,但是不最终写入文件,只展示结果,展示完后,模式空间的数据立即删除

2、sed 文本内容处理工具,文件过大怎么办?

split拆分文件

或者通过  cat  文件名  |  sed  处理(只适用于中兴文件,大型文件还是先分割)

3、sed的操作选项

sed -e '操作'  文件1 -e '操作' 文件2

3.1 常用选项

-e :条件操作选项

-f :指定脚本文件来处理输入的文件内容,把命令写在脚本里,用脚本里的命令来处理第二个文件里面的内容

-i :立即生效 慎用

-n :显示script处理之后的结果

3.2 操作符

s 替换指定字符

d  删除指定的行

a  增加在当前的下面插入指定内容

i  增加,在指定行的上面插入指定的内容

c  替换,整行替换

y  替换字符,但是替换前后的字符长度必须一致

p  打印

r  扩展正则

sed的核心就是改,删 ,增 查是没有grep强大 

sed '  '  :查看打印功能

eg:sed  '  '  /etc/passwd

只输出行号:sed  -n  '='  ky30.txt

输出行号和内容:sed  -n  '=;p'  ky30.txt

打印指定行:sed  -n  '2p'  ky30.txt

直接打印最后一行:sed  -n  '$p'  ky30.txt

3.3 行号的范围打印

sed  -n  '1,3p'  ky30.txt  打印1到3行

sed  -n  '2,+2p'  ky30.txt  打印第2到第4行

 sed  -n  '2p;$p'  ky30.txt  打印第二行和最后一行

3.4 对包含指定字符串的内容进行打印

sed  -n  '/o/p'  ky20.txt  把所有包含o的行会全部打印

sed  -r  -n  '/(99:){2}/p'  /etc/passwd  把有99的那行打印

3.5 删

sed  "d"  ky30.txt

eg:怎么不进人文件就可以删除文件的内容(免交互删除)

sed  -i  'd'  ky30.txt或者 cat  /dev/null  >  ky30.txt

指定行号进行删除:

sed  -n  '3d;p'  ky30  删除第三行,打印剩余行内容

sed  -n  '|d;3d;p'  ky30.txt

sed  '/big/!d'  ky30.txt  除了big这行不删除

3.5.1 正则表达式删除

sed  '/^$'  ky30.txt  删除空行

3.6 替换

s:替换字符串

c:整行替换

y:单字符替换,前后长度保持一致

sed  -n  's/root/test/p'  /etc/passwd  替换每行的第一个root为test,想要替换第二个在p前面加一个2,想要替换全部在p前面加个g

3.6.1 字母字符的大小写替换

sed  's/[a-z]/\u&/'  ky30.txt  首字母变大写了

sed  's/[a-z]/\u&/g'  ky30.txt所有字母都生效

l&转换成小写的特殊符号,在使用时,需要转义符\

eg:sed  's/[A-Z]\l&/g'  ky30.txt

 u&转换成大写的特殊符号,在使用时,需要转义符\

g 全部替换,如果不加,只会更改首字符

3.7 整行替换和单字符替换

sed  '/exy/c  zhangsan is  sexy'  ky30.txt  将exy替换成zhangsan  is  sexy

字符串替换前后长度要相同:y

sed  'y/a/1/'  ky30.txt  将a换成1

3.8 增加

a:在下一行添加

i:在上一行添加

r: 在行后读入指定文件内容

eg:sed  '/123/a  456'  ky30.txt

sed  '/bighouse/r  ky31.txt'  ky30.txt   前面为要读的文件  后面为本文件

3.9 sed命令当中字符串的位置进行交换

sed  -r  使用扩展正则

echo  ky30lt  |  sed  -r  's/(ky30)(lt)/\2\'p

汉字换位:

echo  汉字  |  sed  -r  's/(.)(.)/\2\1/'

sed  -f: 指定脚本文件来处理输入的文件内容,把命令写在脚本里,用脚本里的命令来处理第二个文件里面的内容

3.10 取日志范围 

 

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

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

相关文章

深入浅出 栈和队列(附加循环队列、双端队列)

栈和队列 一、栈 概念与特性二、Stack 集合类及模拟实现1、Java集合中的 Stack2、Stack 模拟实现 三、栈、虚拟机栈、栈帧有什么区别?四、队列 概念与特性五、Queue集合类及模拟实现1、Queue的底层结构(1)顺序结构(2)链…

Golang-使用 gvm 进行版本控制

当你想为每个项目切换 go 版本时,gvm (Go Version Manager) 很方便。 这里,我将介绍“如何在Mac上安装gvm”和“如何使用gvm” 使用准备 仅适用于 Mac 的准备工作 按照MacOSX 要求中的说明执行以下命令。 xcode-select --install brew update brew …

C++(Qt)软件调试---将调试工具安装到AeDebug(11)

C(Qt)软件调试—将调试工具安装到AeDebug(11) 文章目录 C(Qt)软件调试---将调试工具安装到AeDebug(11)1、前言1.1 使用的调试工具 2、调试器安装1.1 WinDbg1.2 procdump1.3 DrMinGW1.4 vsjitdebugger 更多精彩内容👉个…

深入了解Linux运维的重要性与最佳实践

Linux作为开源操作系统的代表,在企业级环境中的应用越来越广泛。而在保障Linux系统的正常运行和管理方面,Linux运维显得尤为关键。本文将介绍Linux运维的重要性以及一些最佳实践,帮助读者更好地了解和掌握Linux系统的运维技巧。 首先&#xf…

OPENCV C++(十)gramm矫正+直方图均衡化

两者都是只对单通道使用,对多通道的话 就需要分离通道处理再合并通道 两种方法,第一个要运算次数太多了,第二个只需要查表 伽马矫正函数,这里用第二种方法,且写法有点高级 int gammaCorrection(cv::Mat srcMat, cv::…

Java【Spring】使用注解, 更简单的存储和获取 Bean

文章目录 前言一、存储 Bean1, 配置文件2, 五大类注解Bean 的命名规则 3, 方法注解Bean 的命名规则 二、获取 Bean1, 属性注入2, Setter 注入3, 构造方法注入4, Autowired 和 Resource 的区别5, 同一个类型的多个 Bean 注入问题 总结 前言 各位读者好, 我是小陈, 这是我的个人主…

【网络基础实战之路】实现RIP协议与OSPF协议间路由交流的实战详解

系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS:本要求基于…

FreeRTOS(任务通知)

资料来源于硬件家园:资料汇总 - FreeRTOS实时操作系统课程(多任务管理) 目录 一、任务通知的概念 1、概念 2、发送通知给任务的方式 3、任务通知使用限制 二、任务通知的运行机制 三、任务通知的API函数 1、任务通知的数据结构 2、常用的API函数 3、函数x…

opencv实战项目 手势识别-实现尺寸缩放效果

手势识别系列文章目录 手势识别是一种人机交互技术,通过识别人的手势动作,从而实现对计算机、智能手机、智能电视等设备的操作和控制。 1. opencv实现手部追踪(定位手部关键点) 2.opencv实战项目 实现手势跟踪并返回位置信息&…

基于低代码和数字孪生技术的电力运维平台设计

电力能源服务商在为用能企业提供线上服务的时候,不可避免要面对用能企业的各种个性化需求。如果这些需求和想法都要靠平台厂家研发人员来实现,那在周期、成本、效果上都将是无法满足服务运营需要的,这也是目前很多线上能源云平台应用效果不理…

【状态模式】拯救if-else堆出来的屎山代码

前言 我想大家平时都在开发重都遇见过屎山代码,这些屎山代码一般都是由于复杂且庞大的if-else造成的,状态模式,是一种很好的优化屎山代码的设计模式,本文将采用两个业务场景的示例来讲解如何使用状态模式拯救屎山代码。 目录 前…

【Axure高保真原型】通过输入框动态控制环形图

今天和大家分享通过输入框动态控制环形图的原型模板,在输入框里维护项目数据,可以自动生成对应的环形图,鼠标移入对应扇形,可以查看对应数据。使用也非常方便,只需要修改输入框里的数据,或者复制粘贴文本&a…

简单记录牛客top101算法题(初级题C语言实现)BM17 二分查找 BM21 旋转数组的最小数字 BM23 二叉树的前序遍历

1. BM17 二分查找 要求:给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标(下标从 0 开始),否则返回 -1。 输入&#xff1a…

【云原生】K8S存储卷:PV、PVC详解

目录 一、emptyDir存储卷二、hostPath存储卷三、nfs共享存储卷四、PVC 和 PV4.1 NFS使用PV和PVC4.2创建动态PV 一、emptyDir存储卷 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,ku…

UG NX二次开发(C++)-PK函数创建一条圆弧曲线

文章目录 1、前言2、创建一个项目3、添加头文件4、在do_it中添加创建圆曲线的源代码5、调用dll6、再创建一个长方体验证1、前言 采用PK进行UG NX二次开发,现在看到的文章很多是直接创建实体,然后在UG NX的视图区显示出来,对于创建圆曲线的文章不多,本文讲一下PK函数创建圆…

Git 代码分支规范

目的 俗话说:没有规矩,不成方圆。遵循一个好的规章制度能让你的工作事半功倍。同时也可以展现出你做事的认真的态度以及你的专业性,不会显得杂乱无章,管理困难。Git分支规范也是一样。当遵循了某种约定的Git分支,在代…

若依框架浅浅介绍

由若依官网所给介绍可知 1、文件结构介绍 在ruoyi-admin的pom.xml文件中引入了ruoyi-framework、ruoyi-quartz和ruoyi-generatior模块,在ruoyi-framework的pom.xml文件中引入了ruoyi-system模块。 2、技术栈介绍 前端:Vue、Element UI后端&#xff1a…

第1章:绪论

科学、技术、工程、应用 科学:是什么、为什么技术:怎么做工程:怎样做的多快好省应用:怎么使用 定义 机器学习:利用经验改善系统自身的性能。 研究 智能数据分析(数据分析算法) 典型的机器…

电脑ip地址怎么改 ip地址怎么改到别的城市

一、ip地址怎么改到别的城市 1.ip地址怎么改到别的城市,1、重启WIFI路由设备 一般手机或电脑在家或公司上网时都是接入到路由器的WIFI网络,再由路由器分配上网IP地址,如果要更换上网IP那么重启路由器设备后,路由器会向网络运营商进行宽带的重新拨号,此时手机或电脑设…

【【verilog 典型电路设计之加法器树乘法器】】

verilog 典型电路设计之加法器树乘法器 加法器树乘法器 加法器树乘法器的设计思想是“移位后加”,并且加法运算采用加法器树的形式。乘法运算的过程是,被乘数与乘数的每一位相乘并且乘以相应的权值,最后将所得的结果相加,便得到了…