Linux三剑客之-sed
一、sed简介
在Linux/UNIX系统中包含很多种类的文本处理器或文本编辑器,其中包括其中包括我们之前学习过的VIM 编辑器与grep 等。而 grep,sed,awk 更是Shell 编程中经常用到的文本处理工具, 被称之为Shell 编程三剑客。
sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。
sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于Shell脚本中,用以完成各种自动化处理任务。
二、sed工作原理
一行一行处理的
当从文件中读取一行后,首先放到模式空间中对该行进行相应的处理,处理完将结果输出到屏幕上。然后继续读取下一行内容,直到所有行都读取完毕,sed结束。
三、sed基本使用
选项:
-n:静默输出,关闭模式空间的输出,不会输出未匹配到的行 一般与p命令结合使用
-e:允许进行多项编辑,也就是说对同一行做多次处理、. 可以做多点编辑
-e '动作1' -e '动作2' == '动作1;动作2'
-f:后接sed脚本,指定执行的sed脚本(将模式动作写到文件中)
-r:允许使用扩展正则
-i:直接作用于原文件 没有输出 在使用-i之前一定先不加-i看看效果
-i.bak:修改原文件之前进行备份
模式:
1.空模式,表示所有的行都执行动作
2.以行号作为模式
1). 单独的行号
如:1 就是处理第1行
$ 处理最后一行
2). 起始行,结束行
如:1,5 处理第1到5行
3). 起始行~步长
每隔多少行操作一次
如:2~2 从第2行开始,每隔1行
4). 起始位置,+N
表示从起始位置开始,后面的N行都进行处理
如:3,+5 处理3-8行
3.以正则作为模式
1). /正则表达式/
如:/^root/
2). /正则表达式1/,/正则表达式2/
表示从第一次匹配到正则表达式1开始到第一次匹配到正则表达式2之间的所有行
如:/^bin/,/sh$/
动作-----处理命令: ! 非 : 放在命令前面表示取反
d 删除 delete
p 打印 print
r 读取 read
w 写 write
a 追加 在匹配的行下面插入内容 append
i 插入 在匹配行的上一行插入内容 insert
c 修改 本行替换 change
y 转换的命令,一一对应转换
n 处理下一行 next
q 退出,不会再向模式空间读入新的行 quit
s 查找替换
'模式s/旧的内容(正则表达式)/替换内容(新的内容)/[修饰符]'
修饰符:
四、随堂案例
sed的内容非常多,虽然有些复杂,但是在工作中用的非常多,可以给我们工作中带来很多便利,下面我们看到几个案例
1.从以root开头的行,到以login结尾的行,将sbin替换为bin (/etc/passwd文件或其一部分)
sed -r -n '/root/,/login/s/sbin/bin/p' /etc/passwd
2.将格式为2014/08/17的日期,替换为2023; 02; 02这样的格式(注意:分号后面有空格)
date +"%Y/%m/%d"|sed 's/\//; /g'
3.将pass文件每行打印3次
sed 'p;p;' /tmp/pass
4.打印pass文件的第1行和第3行
sed -n '1p;3p;' /tmp/pass
5.删除pass文件的第一行和最后一行
sed '1d;$d' pass
6.删除pass文件中所有的数字
sed -r 's/[0-9]*//g' pass
五、结言
同学们,今天的Linux三剑客之sed就学到这里,各位同学们一定要勤加练习.
猜你喜欢LIKE
相关推荐HOT
更多>>article标签是什么元素?有什么作用
article标签是 HTML5 中的元素,用于定义一个独立的、完整的内容单元,通常包含文章、博客、新闻、评论等内容。增强可读性:使用 标签可以使页...详情>>
2023-04-20 16:19:55什么是linux系统内核?什么是linux发行版
Linux 是一个开源操作系统,由内核和许多其他的软件组成。其中,Linux 内核是操作系统的核心,负责管理计算机的硬件资源和提供基本的系统功能,...详情>>
2023-03-03 10:57:37数据埋点(Data buried point)的应用价值剖析
数据埋点指在应用中特定的流程中收集一些信息,用来跟踪应用使用的状况,后续用来进一步优化产品或是提供运营的数据支撑。比如访问数(Visits),...详情>>
2023-02-08 17:38:00web前端技术干货-iframe
在这个网页中,同时在一个页面中展示了三个网站:千锋教育官网、千锋教育HTML5大前端官网、千锋教育HTML5大前端好程序员官网。这是如何做到的呢...详情>>
2022-12-27 16:23:13热门推荐
java异常分类三大类是什么?
沸常用的maven打包命令有哪些?
热article标签是什么元素?有什么作用
热js引用数据类型有哪些
新什么是枚举?没有枚举之前怎么做的
javascript中如何搜索数组元素
css阴影效果属性:box-shadow属性
echarts和chart的优缺点对比
mybatis通用mapper的使用方法
ui设计之js效果-如何制作文字倒计时
svn与git的区别是什么?使用git的优势是什么
什么是linux系统内核?什么是linux发行版
Linux三剑客之-sed
JumpServer堡垒机部署及恢复