快速理解linux流编辑器sed命令
2017-03-03 16:40
197 查看
原创 杜亦舒 性能与架构
之前介绍过 awk 命令,sed 命令同样是非常重要的文本处理工具,涉及到linux shell开发时,几乎是避不开这两大利器的
sed 是 stream editor 的简写,是一种非交互式的流编辑器,默认情况下,sed并不会改变原文件本身,而只是对文本流进行修改,并将修改后的结果打印到标准输出中
与awk命令一样,sed处理文本时也是以行为单位,每处理完一行就立即打印出来,然后再处理下一行,直至全文处理结束
sed可做的编辑动作包括删除、查找替换、添加、插入、从其他文件中读入数据等
常用场景
(1)shell脚本中不便使用vi命令对文件进行编辑,sed命令则很方便
(2)文件太大,用vi编辑器打开文件有性能问题,就可以使用sed命令编辑
(3)有规律的文本修改,例如全文替换,使用sed命令非常快速
命令格式
sed [options] 'command' file
options 是参数
command 是命令集合
file 是要编辑的文件路径
下面通过一些例子来了解sed的基本用法
(1)删除
d 命令用来删除
$ sed '1d' Sed.txt
将Sed.txt的第一行删除后输出到屏幕
由于sed默认不修改原文件,如果希望保存修改后的文件则需要用重定向
$ sed '1d' Sed.txt > Sed2.txt
如果想直接修改文件,使用-i参数
$ Sed -i '1d' Sed.txt
这里不会有任何输出,而是直接修改了源文件,删除了第一行
删除指定范围的行
$ sed '1,3d' Sed.txt
删除第一行到最后行
$ sed '1,$d' Sed.txt
删除最后一行
$ sed '$d' Sed.txt
删除除指定范围以外的行(只保留第5行)
$ sed '5!d' Sed.txt
删除所有包含abc的行
$ sed '/abc/d' Sed.txt
/abc/ 是指定搜索条件
(2)查找替换
s 命令用来查找替换
$ sed 's/abc/ABC/' Sed.txt
替换Sed.txt中每行的第一个abc为ABC
也可以指定替换的个数,如想替换两个
$ sed 's/abc/ABC/2' Sed.txt
利用g选项,可以完成所有匹配值的替换
$ sed 's/abc/ABC/g' Sed.txt
/.../ 内部可以接收正则表达式,例如替换abc开头的
$ sed 's/^abc/ABC/' Sed.txt
(3)插入文本
i 命令可以在匹配行之前插入
a 命令可以在匹配行之后插入
在第二行前插入文本
$ sed '2 i test' Sed.txt
在第二行后插入文本
$ sed '2 a test' Sed.txt
也可以在匹配行的上一行插入内容
例如在匹配到abc的行的上一行插入
$ sed '/abc/i\test' Sed.txt
(4)打印
使用 p 命令可进行打印,这里使用sed命令时加 -n 参数,表示不打印没关系的行
打印出文件中的第一行
$ sed -n '1p' Sed.txt
使用p命令,只打印实际处理过的行,简化输出
$ sed -n 's/abc/ABC/p' Sed.txt
这个命令先替换abc为ABC,然后只打印出替换过的行
之前介绍过 awk 命令,sed 命令同样是非常重要的文本处理工具,涉及到linux shell开发时,几乎是避不开这两大利器的
sed 是 stream editor 的简写,是一种非交互式的流编辑器,默认情况下,sed并不会改变原文件本身,而只是对文本流进行修改,并将修改后的结果打印到标准输出中
与awk命令一样,sed处理文本时也是以行为单位,每处理完一行就立即打印出来,然后再处理下一行,直至全文处理结束
sed可做的编辑动作包括删除、查找替换、添加、插入、从其他文件中读入数据等
常用场景
(1)shell脚本中不便使用vi命令对文件进行编辑,sed命令则很方便
(2)文件太大,用vi编辑器打开文件有性能问题,就可以使用sed命令编辑
(3)有规律的文本修改,例如全文替换,使用sed命令非常快速
命令格式
sed [options] 'command' file
options 是参数
command 是命令集合
file 是要编辑的文件路径
下面通过一些例子来了解sed的基本用法
(1)删除
d 命令用来删除
$ sed '1d' Sed.txt
将Sed.txt的第一行删除后输出到屏幕
由于sed默认不修改原文件,如果希望保存修改后的文件则需要用重定向
$ sed '1d' Sed.txt > Sed2.txt
如果想直接修改文件,使用-i参数
$ Sed -i '1d' Sed.txt
这里不会有任何输出,而是直接修改了源文件,删除了第一行
删除指定范围的行
$ sed '1,3d' Sed.txt
删除第一行到最后行
$ sed '1,$d' Sed.txt
删除最后一行
$ sed '$d' Sed.txt
删除除指定范围以外的行(只保留第5行)
$ sed '5!d' Sed.txt
删除所有包含abc的行
$ sed '/abc/d' Sed.txt
/abc/ 是指定搜索条件
(2)查找替换
s 命令用来查找替换
$ sed 's/abc/ABC/' Sed.txt
替换Sed.txt中每行的第一个abc为ABC
也可以指定替换的个数,如想替换两个
$ sed 's/abc/ABC/2' Sed.txt
利用g选项,可以完成所有匹配值的替换
$ sed 's/abc/ABC/g' Sed.txt
/.../ 内部可以接收正则表达式,例如替换abc开头的
$ sed 's/^abc/ABC/' Sed.txt
(3)插入文本
i 命令可以在匹配行之前插入
a 命令可以在匹配行之后插入
在第二行前插入文本
$ sed '2 i test' Sed.txt
在第二行后插入文本
$ sed '2 a test' Sed.txt
也可以在匹配行的上一行插入内容
例如在匹配到abc的行的上一行插入
$ sed '/abc/i\test' Sed.txt
(4)打印
使用 p 命令可进行打印,这里使用sed命令时加 -n 参数,表示不打印没关系的行
打印出文件中的第一行
$ sed -n '1p' Sed.txt
使用p命令,只打印实际处理过的行,简化输出
$ sed -n 's/abc/ABC/p' Sed.txt
这个命令先替换abc为ABC,然后只打印出替换过的行
相关文章推荐
- 快速理解Linux的压缩命令
- Linux学习笔记——vi/vim编辑器命令快速入门
- 快速调用编辑器来写一条长,复杂或难的命令--用Enki学Linux系列(5)
- 理解linux sed命令
- Linux time 命令的输出理解
- SED单行脚本快速参考(Unix 流编辑器)
- 理解linux tr命令
- 【Linux从零开始】:3.vim编辑器最常用的命令笔记
- Linux中sed命令用法
- Linux Ubuntu15.04 rz快速上传文件命令
- linux下的sed命令详解
- 每天一个linux命令,包含最常用的几十个命令的详细使用,让您快速掌握Linux!
- linux命令的理解
- Windows命令行(cmd)下快速查找文件(类似Linux下find命令)
- linux sed命令详解
- Linux中文本处理命令sed的使用示例分享
- linux快速命令查询手册
- Linux-Sed命令用法
- 理解 Linux 中的 关机命令
- Linux下sed,awk,grep,cut,find等常用命令介绍