sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern
space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有
改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed -n:不输出模式空间内容到屏幕,即不自动打印
sed-e: 多点编辑,对每行处理时,可以有多个Script
sed-f: 把Script写到文件当中,在执行sed时-f 指定文件路径,如果是多个Script,换行写
sed -r: 支持扩展的正则表达式
sed -i: 直接将处理的结果写入文件,源文件会被更改 建议在将处理的结果写入文件之前备份一份
地址定界:
(1) 不给地址:对全文进行处理
sed -n ‘p’ 文件
(2) 单地址:
#: 指定的行
sed -n ‘2p’ 文件
/pattern/:被此处模式所能够匹配到的每一行
sed -n ‘/^1/p’文件
(3) 地址范围:
#,#
sed -n ‘1,3p’
#,+#
sed -n ‘2,+1p’
/pat1/,/pat2/
sed -n ‘/redhat/,/linux/p’
#,/pat1/
sed -n ‘2,/linux/p‘
同上
(4) ~:步进
sed -n ‘1~2p’ 只打印奇数行
sed -n ‘2~2p’ 只打印偶数行
编辑命令
d: 删除模式空间匹配的行,并立即启用下一轮循环
sed ‘2d’ 文件
p:打印当前模式空间内容,追加到默认输出之后
sed ‘2p’ 文件
a [\]text:在指定行后面追加文本,支持使用\n实现多行追加
sed ‘2a\123\n456\n789’ 文件
i [\]text:在行前面插入文本
sed ‘2i\123\n456\n789’ 文件
c [\]text:替换行为单行或多行文本
sed ‘2c\123\n456\n789’ 文件
w /path/somefile: 保存模式匹配的行至指定文件
sed -n ‘3w /root/3.file’ 文件
r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后
sed ‘3r /root/mage.txt’ 文件
=: 为模式空间中的行打印行号
sed ‘=’ 文件
!:模式空间中匹配行取反处理
sed -n ‘2!p’ 文件
s///:查找替换,支持使用其它分隔符,s@@@,s###替换标记:
g: 行内全局替换
sed ‘s/dog/cat/g’ 文件
原创文章,作者:李先生,如若转载,请注明出处:http://www.178linux.com/85389