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 取日志范围 

 

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

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

相关文章

DNS:使用 bind9 配置主从权威DNS服务器

写在前面 分享一些 使用 bind9 配置主从权威名称服务器的笔记理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式…

Flink多流处理之Broadcast(广播变量)

写过Spark批处理的应该都知道,有一个广播变量broadcast这样的一个算子,可以优化我们计算的过程,有效的提高效率;同样在Flink中也有broadcast,简单来说和Spark中的类似,但是有所区别,首先Spark中的broadcast是静态的数据,而Flink中的broadcast是动态的,也就是源源不断的数据流.在…

笔记本电脑如何把sd卡数据恢复

在使用笔记本电脑过程中,如果不小心将SD卡里面的重要数据弄丢怎么办呢?别着急,本文将向您介绍SD卡数据丢失常见原因和恢复方法。 ▌一、SD卡数据丢失常见原因 - 意外删除:误操作或不小心将文件或文件夹删除。 - 误格式化&#…

【资讯速递】AI与人类思维的融合;OpenAI在中国申请注册“GPT-5”商标;移动大模型主要面向to B 智能算力是未来方向

2023年8月11日 星期五 癸卯年六月廿五 第000001号 欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于IT资讯速递专栏,本专栏主要用于发布各种IT资讯,为大家可以省时省力的就能阅读和了解到行业的一些新资讯 资…

C++初阶之一篇文章教会你list(理解和使用)

list(理解和使用) 什么是list特点和优势基本操作示例用法与其他序列式容器(如 std::vector 和 std::deque)相比,std::list 显著的区别和优势成员类型 list构造函数1. default (1)2. fill (2)3.range (3)4. copy (4) li…

ubuntu20.04磁盘满了 /dev/mapper/ubuntu--vg-ubuntu--lv 占用 100%

问题 执行 mysql 大文件导入任务,最后快完成了,查看结果发现错了!悲催!都执行了 两天了 The table ‘XXXXXX’ is full ? 磁盘满了? 刚好之前另一个 centos 服务器上也出现过磁盘满了,因此&a…

什么是Selenium?使用Selenium进行自动化测试

什么是 Selenium?   Selenium 是一种开源工具,用于在 Web 浏览器上执行自动化测试(使用任何 Web 浏览器进行 Web 应用程序测试)。   等等,先别激动,让我再次重申一下,Selenium 仅可以测试We…

大连交通大学813软件工程考研习题

1.什么是软件生存周期模型?有哪些主要模型? 生存周期模型:描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型…

云计算——常见存储类型

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.存储类型 1.本地磁盘 2.DAS 3.NAS 4.SAN (1)FC SA…

锁定Mac的内置键盘,防止外接键盘时的误触

场景:把你的外接键盘放在mac上,然后打字时,发现外接键盘误触mac键盘,导致使用体验极差 解决方案:下载Karabiner-Elements这款软件,并给它开启相关权限。 地址:https://github.com/pqrs-org/Ka…

ModaHub魔搭社区——Milvus 、Qdrant、Waeviate、Pinecone、ElasticSearch矢量数据库对比

资本市场上,2022年也是风起云涌的一年的,各大向量数据库公司纷纷完成了千万美元级别新一轮的融资。可以预见,2023年将会是向量数据库继续快速发展的一年,也会是这一新兴技术由发展走向成熟的一年。这里针对Milvus 、Qdrant、Waeviate、Pinecone、ElasticSearch这五个流行的…

编写简单的.gitlab-ci.yml打包部署项目

服务器说明: 192.168.192.120:项目服务器 192.168.192.121:GitLab 为了可以使用gitlab的cicd功能,我们需要先安装GitLab Runner 安装GitLab Runner参考: GitLab实现CICD自动化部署_gitlab cidi_程序员xiaoQ的博客-CS…

HCIA---TCP/UDP协议

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 前言 一.UDP协议简介 UDP协议的特点: 二.TCP协议简介 TCP协议特点 三.TCP和UDP的区别 四.TCP/IP结构详解 五.TCP运输连接的阶段 ​编辑 …

43..利用fsolve函数解对应lambda下的方程组(matlab程序)

1.简述 fsolve的基本用法 : x fsolve(fun,x0) 其中fun应为函数句柄,x0为搜索的种子,即预估的fun0的解的大致位置。 函数句柄的定义方式主要有两种: 1.定义函数文件,使用操作符 定义function文件root2d.m, 如下: …

怎么把图片表格转换成word表格?几个步骤达成

在处理文档时,图片表格的转换是一个常见的需求。而手动输入表格是非常耗时的,因此,使用文本识别软件来自动转换图片表格可以大大提高工作效率。在本文中,我们将介绍如何使用OCR文字识别技术来将图片表格转换为Word表格。 OCR文字识…

yolov2检测网数据集标注_labelme使用_json2txt格式转换

yolov2检测网数据集标注_labelme使用_json2txt格式转换 一、安装Anaconda二、创建labelme虚拟环境三、使用labelme标注健康非健康猫狗数据3.1 打开数据集所在文件夹3.2 进行标注数据集3.3 json2txt3.4 按文件目录和训练测试数据集重分配 四、数据喂给服务器网络参考链接 一、安…

Paddle OCR V4 测试Demo

效果 项目 VS2022.net4.8OCRV4 代码 using OpenCvSharp; using Sdcb.PaddleInference; using Sdcb.PaddleOCR; using Sdcb.PaddleOCR.Models; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; usin…

[保研/考研机试] KY135 又一版 A+B 浙江大学复试上机题 C++实现

题目链接&#xff1a; KY135 又一版 AB https://www.nowcoder.com/share/jump/437195121691736185698 描述 输入两个不超过整型定义的非负10进制整数A和B(<231-1)&#xff0c;输出AB的m (1 < m <10)进制数。 输入描述&#xff1a; 输入格式&#xff1a;测试输入包…

C语言的简单基础知识

C语言的基础知识包括变量、数据类型、运算符、控制流语句、函数等。下面会对每个部分进行详细解释&#xff0c;并给出相应的案例。 变量和数据类型&#xff1a; 变量&#xff1a;C语言中的变量用于存储数据&#xff0c;并且需要先声明后使用。声明变量时需要指定其数据类型。例…

包管理工具详解npm 、 yarn 、 cnpm 、 npx 、 pnpm(2023)

1、包管理工具npm &#xff08;1&#xff09;包管理工具npm&#xff1a; Node Package Manager&#xff0c;也就是Node包管理器&#xff1b;但是目前已经不仅仅是Node包管理器了&#xff0c;在前端项目中我们也在使用它来管理依赖的包&#xff1b;比如vue、vue-router、vuex、…