sed使用方法
2016-01-03 16:26
639 查看
sed编辑器被称作流编辑器(stream editor)。流编辑器在处理数据之前基于预先提供的一组规则来编辑数据流。一、命令格式 sed options '"地址""编辑命令"' file 常用选项: -n:静默模式,不显示模式内容空间中的内容; -r:支持使用扩展正则表达式; -i:修改原文件; -e:执行多个命令; -f file:将file中指定的命令添加到运行的命令中; 常用编辑命令: p:打印; s:文本替换; d:删除; i text:行上方插入,text即为插入的内容; a test:行下方插入,使用\n插入多行内容; c:修改行内容; r path/from/file:在指定位置合并两个文件; w path/to/somefile:把符合条件的行保存至指定的文件中;二、应用实例 1、替换文本
上例中将/etc/issue文件中的字符“e”替换为数据“8”,但其结果只替换了每行的第一个匹配字符,可以使用替换标记来完成替换所有匹配字符的工作。 1.1 替换标记 格式:s/pattern/replacement/flags 替换标记(flags): 数字:表明新文本将替换第几处模式匹配的地方; g:表明新文体将替换所有模式匹配的地方; p:原来行的内容要打印出来; w file:将替换结果写到文件中。 替换第二个匹配的内容:
替换所有匹配的内容:
只显示被替换过内容的行,通常与-n选项一起使用:
将替换的内容输出到文件中:
1.2 字符串分隔符 在使用进行替换操作时,通常我们习惯使用"/"符号作为分隔符,如查"/"符号需要在模式中用到的话则需在使用"\"来进行转义,如下所示: sed 's/\/tmp/\/dev' /tmp/test 上面的表达式看起来不容易阅读,可以通过修改字符串分隔符来解决此问题: sed 's%/tmp%/dev' /tmp/test 上面的表达式使用"%"来作为字符串分隔符,依然可以达到替换效果。 注:字符串分隔符可以使用任意字符来替换。 2、地址 sed编辑器中可以使用指定地址的方式来过滤想要进行操作的作。 两种行寻址的形式: 1、行的数字范围 2、文本模式过滤 格式:[address]command 2.1 数字方式
上例中只是在s命令前添加地址3,作用是将第3行的“:”全部替换为“,”。
上例中指定了一个地址范围3到5行。
上例中使用了"$"符号,表示将第3行至最后一行的所有“:”全部替换成为“,”。 2.2 文本模式 格式:/pattern/command 模式必须使用"/"括起来。
上例中只替换了有Kernel存在的行。 2.3 多命令 sed编辑器还支持多个命令同时执行。
上例中对于有Kernel的行同时进行了两个地方的替换。 3、删除
删除命令d会将文本中的内容真的删除掉,只是在sed编辑器输出时会被删除掉。
4、插入和追加文本 插入命令i会在指定行的行前增加一个新行; 追加命令a会在指定行的行后增加一个新行。 格式:[地址]a/i 插入的内容
5、修改行 工作机制与插入和追加相同,格式也一样。
将/etc/issue文件的第一行修改为指定内容。 6、将替换结果写到文件 格式:[address]w filename
7、从文件中读取数据 格式:[address]r filename
将test文件中的内容插入到/etc/issue文件中。 8、常用选项实例
使用-e选项同时执行多个命令。
使用文件中的命令来执行替换操作。
上例中将/etc/issue文件中的字符“e”替换为数据“8”,但其结果只替换了每行的第一个匹配字符,可以使用替换标记来完成替换所有匹配字符的工作。 1.1 替换标记 格式:s/pattern/replacement/flags 替换标记(flags): 数字:表明新文本将替换第几处模式匹配的地方; g:表明新文体将替换所有模式匹配的地方; p:原来行的内容要打印出来; w file:将替换结果写到文件中。 替换第二个匹配的内容:
替换所有匹配的内容:
只显示被替换过内容的行,通常与-n选项一起使用:
将替换的内容输出到文件中:
1.2 字符串分隔符 在使用进行替换操作时,通常我们习惯使用"/"符号作为分隔符,如查"/"符号需要在模式中用到的话则需在使用"\"来进行转义,如下所示: sed 's/\/tmp/\/dev' /tmp/test 上面的表达式看起来不容易阅读,可以通过修改字符串分隔符来解决此问题: sed 's%/tmp%/dev' /tmp/test 上面的表达式使用"%"来作为字符串分隔符,依然可以达到替换效果。 注:字符串分隔符可以使用任意字符来替换。 2、地址 sed编辑器中可以使用指定地址的方式来过滤想要进行操作的作。 两种行寻址的形式: 1、行的数字范围 2、文本模式过滤 格式:[address]command 2.1 数字方式
上例中只是在s命令前添加地址3,作用是将第3行的“:”全部替换为“,”。
上例中指定了一个地址范围3到5行。
上例中使用了"$"符号,表示将第3行至最后一行的所有“:”全部替换成为“,”。 2.2 文本模式 格式:/pattern/command 模式必须使用"/"括起来。
上例中只替换了有Kernel存在的行。 2.3 多命令 sed编辑器还支持多个命令同时执行。
上例中对于有Kernel的行同时进行了两个地方的替换。 3、删除
删除命令d会将文本中的内容真的删除掉,只是在sed编辑器输出时会被删除掉。
4、插入和追加文本 插入命令i会在指定行的行前增加一个新行; 追加命令a会在指定行的行后增加一个新行。 格式:[地址]a/i 插入的内容
5、修改行 工作机制与插入和追加相同,格式也一样。
将/etc/issue文件的第一行修改为指定内容。 6、将替换结果写到文件 格式:[address]w filename
7、从文件中读取数据 格式:[address]r filename
将test文件中的内容插入到/etc/issue文件中。 8、常用选项实例
使用-e选项同时执行多个命令。
使用文件中的命令来执行替换操作。
相关文章推荐
- Linux下使用sed编辑器详解
- 什么是Shell?Shell脚本基础知识详细介绍
- 学习shell脚本之前的基础知识[图文]
- 一波实用的Bash Shell整理
- sed或awk处理文件最后一行的实现方法
- 用内置变量调试shell脚本的方法
- 自己常用的一些shell脚本分享
- 查看某时间段到现在的系统日志的sed命令
- bash脚本输入密码不回显问题的解决方法
- 用Shell脚本快速搭建Ubuntu下的Nodejs开发环境
- MAC中用Shell脚本批量裁剪各种尺寸的App图标
- Shell实现系统时间和BIOS时间同步校准脚本分享
- Linux下实现SNMP一键安装的Shell脚本
- bash 编程中循环语句用法
- Linux BASH多进程并行处理的方法实现
- PHP教程之PHP中shell脚本的使用方法分享
- BASH 学习笔记小结
- 实现MySQL定时批量检查表repair和优化表optimize table的shell脚本
- Ubuntu、Linux Mint一键安装Chrome浏览器的Shell脚本分享
- shell脚本监控系统负载、CPU和内存使用情况