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>
的行