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
-
g全局替换2替换第二个 - 使用-n和p实现打印特殊行
sed -n '/<html>/p' 打印含<html>的行