沙漏不倒翁 - 小屋

sed

简单应用

强大的文本替换

基本语法

sed 's;a;b;'

把a替换成b,s后面规定了界定符,如果a中出现;则需要\;转义

结合后向引用可以形成很强大的功能。如:

find /Users/wengsht/Dropbox/wiki | grep -e png -e jpg | sed 's;\(^.*$\);\1 \1;' | sed 's;^;cp ;' | sed 's;Dropbox/wiki;Program/wengsht.github.com/wiki;2' | sh

实现将wiki中的图片拷贝到相应的html目录下。

完整语法

范围

上面的简单应用实际上是应用于所有的行,实际上我们可以限制命令应用于那些行,如:

sed '/html/ s/a/b/g'

sed -n '10,42p' sed '/a/,/b/ s/a/b/g' 匹配含a行到含b行

将含html的行上面的a替换成b

参数表

-e 多模式,参考grep
-f 从脚本文件中读取命令,用以取代-e选项
-n 仅现实p处理的行,p的位置和g一样,可以并列

选项表

p 打印标记
g 全局
d 删除匹配行
数字 处理第数字个匹配

技巧

在替换串中出现,表示被替换串, 如 sed 's;a;&b;'a替换成ab

sed -n '/<html>/p' 打印含<html>的行

主题来自 Ruchee