sed(Stream Editor)行编辑器
sed是读取到数据至模式空间
默认不编辑原文件;仅对模式空间中的数据做处理
功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作。编写程序等
语法
sed [参数(option)] … ‘(sed脚本)script’ 文件名(inputfile)
常用选项
-i 直接修改原文件
-n 静默模式,不再默认显示模式空间中的内容(不自动打印)
-r 表示 使用扩展正则表达式
-e SCRIPT -e SCRIPT 可以同时执行多个脚本
-f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本
-i.bak 备份文件并原处编辑
地址界定
1不给地址: 对全文进行处理
2单地址:
# 指定的行,
$ 最后一行
/pattern/ 被此处模式所能够匹配到的每一行
3地址范围:
#,# 第几行到第几行
#,+# 从第几行到第N+1行
/pat1/,/pat2/ 第一次被模式1匹配的行开始,至第一次被模式2匹配的行结束
#,/pat1/ 从第几行到被模式1匹配的行结束
~:步进
1~2 奇数行
2~2 偶数行
编辑命令
参数
d 删除模式空间匹配的行,并立即启用下一轮循环
例: sed ‘2!d’ f1
p 显示符合条件的行
a\string 在指定行后面追加新行,内容为string 支持使用\n实现多行追加
i\string 在行前面添加辛新行,内容为string
c\string 替换行为单行或多行文本
w /path/somefile 保存模式匹配的行至指定文件
r /path/somefile 读取指定文件的文本至模式空间中
! 取反
= 为模式空间中的行打印行号
查找替换
s/pattern/string/ 查找替换,支持使用其他分隔符,s@@@,s###
g 行内全局替换
p 显示替换成功的行
w /PATH/TO/SOMEFILE: 将替换成功的行保存至文本文件
未完待续……………………….
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95758