sed工具详解程序员
一、概念
1、含义:
sed意为流编辑器,在shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。因为sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的。
2、工作方式:
Sed是一种线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后把缓冲区的内容送往屏幕。然后再处理下一行,这样不断反复,直到文件末尾。这时文件内容并没有改变,除非你使用重定向存储输出。
其处理过程如下图所示:
3、作用:
Sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,sed默认按照basic规范基本匹配!
二、命令格式:
1、sed option ‘script’ file1 file2 …
2、sed option -f scriptfile file1 file2 …
释:sed处理的文件既可以由标准输入重定向得到,也可以当命令行参数传入,命令行参数可以一次传入多个文件,sed会依次处理。Sed的编辑命令可以直接当命令行参数传入,也可以写成一个脚本文件,然后用-f参数指定,编辑命令的格式为:/pattern/action。其中,pattern表示正则表达式,action表示编辑操作。Sed程序会一行一行地读取待处理文件,如果某一行与pattern匹配,则执行相应的action;如果一条命令没有pattern,而只有action,那么这个action将作用于待处理文件的每一行。
三、/pattern/action编辑命令格式
1、/pattern/p:打印匹配pattern行
使用p命令需要注意:sed是把待处理文件的内容连同处理结果一起输出到标准输出的,因此p命令表示除了把文件内容打印出来之外还额外打印一遍匹配pattern的行。
【例】
注意:要想值输出处理结果,应加上-n选项,这种用法相当于grep命令。
2、/pattern/d:删除匹配pattern的行
【例】
注意:sed命令不会修改原文件,删除命令值表示某些行不打印输出,而不是从原文件中删去。如果加上“-i”参数将直接修改文件内容。
3、/pattern/s/pattern1/pattern2/:查找符合pattern的行,将该行第一个匹配pattern1的字符串替换为pattern2。其实,就是字符串替换,即:用一个字符串替换另外一个字符串。格式为”/行范围/s/旧字符串/新字符串/g”(如果不加g的话,则表示只替换每行第一个匹配的串)。
【例】
4、定址
定址用于决定哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
【例1】打印第三行
【例2】删除第二行到第五行
【例3】删除包含‘3’和‘4’之间的行。
【例4】删除文件file中的第三行到包含4之间的行。
【例5】删除第三行到最后一行。
注意:地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内),范围可以用数字、正则表达式或二者的组合表示。
四、命令和选项
sed命令告诉sed如何处理由地址指定操作各输入行,如果没有指定地址则处理所有的输入行。
1、命令:
(1)a/:在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“/”续行。
(2)c/:用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需要“/”续行。
(3)i/:在当前行之前插入文本。多行时除了最后一行外,每行末尾需用“/”续行d删除行。
(4)h:把模式空间里的内容复制到暂存缓冲区。
(5)H:把模式空间里的内容追加到暂存缓冲区。
(6)g:把暂存缓冲区里的内容复制到模式空间,覆盖原有内容。
(7)G:把暂存缓冲区里的内容追加到模式空间,追加到原有内容的后面。
(8)l:列出非打印字符。
(9)p:打印行。
(10)q:结束或退出sed。
(11)r:从文件中读取输入行。
(12)!:对所选行以外的所有行应用命令。
(13)s:用一个字符替换另一个字符。
(14)g:在行内进行全局替换。
(15)x:将所选的行写入文件。
(16)y:将字符替换为另一个字符(不能对正则表达式使用y命令)。
2、选项:
(1)-e:进行多行编辑,即对输入行应用多条sed命令时使用。
(2)-n:取消默认的输出。
(3)-f:指定shell脚本的文件名。
五、退出状态
sed不像grep一样,不管是否找到指定的模式,它的退出状态都是0。只有当命令存在语法错误时,sed的退出状态才不是0。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/1665.html
服务器部署程序员系统优化网站设置运维相关文章
- Python安装与第三方工具——pycharm安装
- 汉字转拼音的工具类
- 适合广告行业乙方使用的音视频协作工具
- 程序员必备:5个强大的静态代码分析工具
- 推荐几款程序员提升工作效率的必备工具
- 分享一个自带翻译的Linux系统连接工具 FinalShell
- 从0开始聊聊自动化静态代码审计工具
- Linux 工具命令(04): envsubst2 一个比使用 envsubst 更省心的环境变量渲染工具
- Lumion 11.0:领先的建筑可视化工具再次升级!+全版本安装包
- JetBrains系列程序员编程工具全家桶下载安装教程+2023最新版激活安装
- sql编程工具Sql Prompt下载及安装破解图文教程
- linux gstack pstack 进程运行堆栈查看工具 strip详解程序员
- linux 监控工具netdata详解程序员
- [mysql] 归档工具pt-archiver,binlog格式由mixed变成row详解程序员
- [linux] lsyncd同步工具详解程序员
- Linux 管理服务启动工具详解程序员
- 大数据分析系统Hadoop的13个开源工具详解大数据
- 员利器Linux:成为优秀程序员的有力工具(linux好程序)
- 30个糟糕的程序员抵不过一款好工具
- OCA 联盟推出面向安全工具行业的首个开源消息传递框架
- 为程序员和新手准备的 8 大 Python 工具
- MySQL密码管理工具:安全、高效、易用(mysql密码工具)
- Linux开发系统:打造高效程序员必备工具(linux开发系统)
- AJAX开发者的最新工具和技术